ooxml-core 1.12.2 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/PptxHandler-5YP75BPO.cjs +12 -0
- package/dist/PptxHandler-GT5Q66TG.mjs +3 -0
- package/dist/{PptxHandler-FIN6XDTI.mjs → PptxHandler-KNBFECUE.mjs} +3 -3
- package/dist/PresentationBuilder-5DCCFHWJ.mjs +7 -0
- package/dist/PresentationBuilder-CVM6LJ7L.mjs +3 -0
- package/dist/PresentationBuilder-II7C4A3R.cjs +20 -0
- package/dist/automation/docx.d.ts +18 -0
- package/dist/automation/docx.d.ts.map +1 -1
- package/dist/automation/index.cjs +22549 -8585
- package/dist/automation/index.d.ts +1 -0
- package/dist/automation/index.d.ts.map +1 -1
- package/dist/automation/index.mjs +22546 -8586
- package/dist/automation/node.cjs +66 -6
- package/dist/automation/node.d.ts +10 -0
- package/dist/automation/node.d.ts.map +1 -1
- package/dist/automation/node.mjs +67 -7
- package/dist/automation/outline.d.ts +29 -0
- package/dist/automation/outline.d.ts.map +1 -0
- package/dist/automation/xlsx.d.ts +21 -0
- package/dist/automation/xlsx.d.ts.map +1 -1
- package/dist/chart/auto-title.d.ts +31 -0
- package/dist/chart/auto-title.d.ts.map +1 -0
- package/dist/chart/axis-format.d.ts +13 -0
- package/dist/chart/axis-format.d.ts.map +1 -0
- package/dist/chart/bubble-radius.d.ts +30 -0
- package/dist/chart/bubble-radius.d.ts.map +1 -0
- package/dist/chart/error-bar-amount.d.ts +22 -0
- package/dist/chart/error-bar-amount.d.ts.map +1 -0
- package/dist/chart/hierarchy.d.ts +69 -0
- package/dist/chart/hierarchy.d.ts.map +1 -0
- package/dist/chart/index.cjs +2377 -527
- package/dist/chart/index.d.ts +12 -0
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.mjs +2338 -528
- package/dist/chart/model-analysis.d.ts +66 -0
- package/dist/chart/model-analysis.d.ts.map +1 -0
- package/dist/chart/model-series.d.ts +5 -0
- package/dist/chart/model-series.d.ts.map +1 -1
- package/dist/chart/number-format-pattern.d.ts +35 -0
- package/dist/chart/number-format-pattern.d.ts.map +1 -0
- package/dist/chart/number-format.d.ts +21 -0
- package/dist/chart/number-format.d.ts.map +1 -0
- package/dist/chart/parse-analysis.d.ts +13 -0
- package/dist/chart/parse-analysis.d.ts.map +1 -0
- package/dist/chart/parse-series.d.ts +1 -1
- package/dist/chart/parse-series.d.ts.map +1 -1
- package/dist/chart/parse-util.d.ts +2 -0
- package/dist/chart/parse-util.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-analysis.d.ts +7 -0
- package/dist/chart/render/chart-svg-analysis.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-bars.d.ts +5 -0
- package/dist/chart/render/chart-svg-bars.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-cartesian.d.ts +7 -2
- package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-hierarchy.d.ts +5 -0
- package/dist/chart/render/chart-svg-hierarchy.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-plots.d.ts +5 -0
- package/dist/chart/render/chart-svg-plots.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-stock.d.ts +4 -0
- package/dist/chart/render/chart-svg-stock.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-waterfall.d.ts +4 -0
- package/dist/chart/render/chart-svg-waterfall.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-xy.d.ts +4 -0
- package/dist/chart/render/chart-svg-xy.d.ts.map +1 -0
- package/dist/chart/render/chart-svg.d.ts +1 -1
- package/dist/chart/render/chart-svg.d.ts.map +1 -1
- package/dist/chart/render/chart-value-axis.d.ts +6 -1
- package/dist/chart/render/chart-value-axis.d.ts.map +1 -1
- package/dist/chart/render/chart-view-analysis.d.ts +30 -0
- package/dist/chart/render/chart-view-analysis.d.ts.map +1 -0
- package/dist/chart/render/chart-view-ex.d.ts +24 -0
- package/dist/chart/render/chart-view-ex.d.ts.map +1 -0
- package/dist/chart/render/chart-view-families.d.ts +10 -0
- package/dist/chart/render/chart-view-families.d.ts.map +1 -0
- package/dist/chart/render/chart-view-series.d.ts +36 -0
- package/dist/chart/render/chart-view-series.d.ts.map +1 -0
- package/dist/chart/render/chart-view-stock.d.ts +23 -0
- package/dist/chart/render/chart-view-stock.d.ts.map +1 -0
- package/dist/chart/render/chart-view.d.ts +49 -18
- package/dist/chart/render/chart-view.d.ts.map +1 -1
- package/dist/chart/render/index.d.ts +2 -0
- package/dist/chart/render/index.d.ts.map +1 -1
- package/dist/chart/render/render-space.d.ts +6 -1
- package/dist/chart/render/render-space.d.ts.map +1 -1
- package/dist/chart/render/summary-analysis.d.ts +11 -0
- package/dist/chart/render/summary-analysis.d.ts.map +1 -0
- package/dist/chart/render/summary-from-chartex.d.ts +11 -0
- package/dist/chart/render/summary-from-chartex.d.ts.map +1 -0
- package/dist/chart/render/summary-from-space.d.ts.map +1 -1
- package/dist/chart/render/summary.d.ts +86 -3
- package/dist/chart/render/summary.d.ts.map +1 -1
- package/dist/chart/stock-candles.d.ts +72 -0
- package/dist/chart/stock-candles.d.ts.map +1 -0
- package/dist/chart/style-palette.d.ts +29 -0
- package/dist/chart/style-palette.d.ts.map +1 -0
- package/dist/chart/sunburst-arcs.d.ts +41 -0
- package/dist/chart/sunburst-arcs.d.ts.map +1 -0
- package/dist/chart/trendline-fit.d.ts +39 -0
- package/dist/chart/trendline-fit.d.ts.map +1 -0
- package/dist/chart/waterfall.d.ts +31 -0
- package/dist/chart/waterfall.d.ts.map +1 -0
- package/dist/chart/write-analysis.d.ts +12 -0
- package/dist/chart/write-analysis.d.ts.map +1 -0
- package/dist/chart/write-series.d.ts.map +1 -1
- package/dist/{chunk-G5PQKHCG.mjs → chunk-2D4IFQ5M.mjs} +1 -1
- package/dist/{chunk-UAY26XOI.mjs → chunk-2EBMHIGJ.mjs} +1303 -994
- package/dist/{chunk-TVE6UIJF.mjs → chunk-4WZLFUUA.mjs} +54 -13
- package/dist/{chunk-H2FRDUNV.mjs → chunk-54ASP65T.mjs} +868 -585
- package/dist/chunk-M4XLF4R7.mjs +387 -0
- package/dist/{chunk-O6NIA4NG.mjs → chunk-ORH32TO3.mjs} +5798 -5742
- package/dist/{chunk-B2JBBAEQ.mjs → chunk-TNNXOW2O.mjs} +1 -1
- package/dist/{chunk-IT3U6QD6.cjs → chunk-TQE7FFNT.cjs} +6754 -6695
- package/dist/{chunk-7QZGRB3T.cjs → chunk-X7MGZQ6C.cjs} +1321 -995
- package/dist/{chunk-6DELVMYB.mjs → chunk-XGXIS4PN.mjs} +12316 -12260
- package/dist/crypto/decrypt.d.ts +17 -3
- package/dist/crypto/decrypt.d.ts.map +1 -1
- package/dist/crypto/encryption-info.d.ts.map +1 -1
- package/dist/crypto/index.cjs +252 -78
- package/dist/crypto/index.d.ts +19 -4
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/crypto/index.mjs +252 -79
- package/dist/crypto/key-derivation.d.ts +2 -3
- package/dist/crypto/key-derivation.d.ts.map +1 -1
- package/dist/crypto/validate.d.ts +22 -0
- package/dist/crypto/validate.d.ts.map +1 -0
- package/dist/diagram/engine/layout-def-parse.d.ts.map +1 -1
- package/dist/diagram/engine/pres-tree.d.ts.map +1 -1
- package/dist/diagram/index.cjs +102 -52
- package/dist/diagram/index.mjs +102 -52
- package/dist/digest/index.cjs +23 -11
- package/dist/digest/index.d.ts +2 -1
- package/dist/digest/index.d.ts.map +1 -1
- package/dist/digest/index.mjs +21 -12
- package/dist/digest/password-hash.d.ts +19 -5
- package/dist/digest/password-hash.d.ts.map +1 -1
- package/dist/digest/timing-safe.d.ts +7 -0
- package/dist/digest/timing-safe.d.ts.map +1 -0
- package/dist/docx/block-parser.d.ts.map +1 -1
- package/dist/docx/chart-paint.d.ts.map +1 -1
- package/dist/docx/chart.d.ts +10 -2
- package/dist/docx/chart.d.ts.map +1 -1
- package/dist/docx/content-control-edit.d.ts +26 -0
- package/dist/docx/content-control-edit.d.ts.map +1 -0
- package/dist/docx/content-control-model.d.ts +51 -0
- package/dist/docx/content-control-model.d.ts.map +1 -0
- package/dist/docx/content-control.d.ts +9 -0
- package/dist/docx/content-control.d.ts.map +1 -0
- package/dist/docx/default-styles.d.ts.map +1 -1
- package/dist/docx/drawing.d.ts.map +1 -1
- package/dist/docx/embedded.cjs +9932 -935
- package/dist/docx/embedded.mjs +9932 -935
- package/dist/docx/equation.d.ts +7 -3
- package/dist/docx/equation.d.ts.map +1 -1
- package/dist/docx/index.cjs +14117 -1513
- package/dist/docx/index.d.ts +6 -0
- package/dist/docx/index.d.ts.map +1 -1
- package/dist/docx/index.mjs +14093 -1514
- package/dist/docx/inline-model.d.ts +3 -0
- package/dist/docx/inline-model.d.ts.map +1 -1
- package/dist/docx/layout/adapt-floats.d.ts +3 -3
- package/dist/docx/layout/adapt-floats.d.ts.map +1 -1
- package/dist/docx/layout/adapter.d.ts.map +1 -1
- package/dist/docx/layout/equation-object.d.ts +7 -0
- package/dist/docx/layout/equation-object.d.ts.map +1 -0
- package/dist/docx/layout/floats.d.ts +8 -0
- package/dist/docx/layout/floats.d.ts.map +1 -1
- package/dist/docx/layout/incremental-layout.d.ts +39 -0
- package/dist/docx/layout/incremental-layout.d.ts.map +1 -0
- package/dist/docx/layout/index.cjs +14177 -1707
- package/dist/docx/layout/index.d.ts +2 -2
- package/dist/docx/layout/index.d.ts.map +1 -1
- package/dist/docx/layout/index.mjs +14176 -1708
- package/dist/docx/layout/input.d.ts +4 -0
- package/dist/docx/layout/input.d.ts.map +1 -1
- package/dist/docx/layout/layout-session.d.ts +13 -2
- package/dist/docx/layout/layout-session.d.ts.map +1 -1
- package/dist/docx/layout/layout.d.ts +1 -1
- package/dist/docx/layout/layout.d.ts.map +1 -1
- package/dist/docx/layout/line-metrics.d.ts.map +1 -1
- package/dist/docx/layout/page-cursor.d.ts +1 -1
- package/dist/docx/layout/page-cursor.d.ts.map +1 -1
- package/dist/docx/layout/page-fields.d.ts +3 -1
- package/dist/docx/layout/page-fields.d.ts.map +1 -1
- package/dist/docx/layout/result.d.ts +14 -1
- package/dist/docx/layout/result.d.ts.map +1 -1
- package/dist/docx/layout/section-flow.d.ts +11 -1
- package/dist/docx/layout/section-flow.d.ts.map +1 -1
- package/dist/docx/ligatures.d.ts +2 -0
- package/dist/docx/ligatures.d.ts.map +1 -1
- package/dist/docx/load/index.cjs +12709 -3590
- package/dist/docx/load/index.mjs +12709 -3590
- package/dist/docx/model-paragraph.d.ts +3 -0
- package/dist/docx/model-paragraph.d.ts.map +1 -1
- package/dist/docx/model-run.d.ts +3 -0
- package/dist/docx/model-run.d.ts.map +1 -1
- package/dist/docx/model.d.ts +3 -0
- package/dist/docx/model.d.ts.map +1 -1
- package/dist/docx/numbering-parse.d.ts.map +1 -1
- package/dist/docx/numbering-text.d.ts.map +1 -1
- package/dist/docx/package-limits.d.ts +6 -0
- package/dist/docx/package-limits.d.ts.map +1 -0
- package/dist/docx/parse-content-control.d.ts +28 -0
- package/dist/docx/parse-content-control.d.ts.map +1 -0
- package/dist/docx/parse-table.d.ts.map +1 -1
- package/dist/docx/parse.d.ts.map +1 -1
- package/dist/docx/save.d.ts.map +1 -1
- package/dist/docx/shape-model.d.ts +31 -0
- package/dist/docx/shape-model.d.ts.map +1 -0
- package/dist/docx/shape-palette.d.ts +19 -0
- package/dist/docx/shape-palette.d.ts.map +1 -0
- package/dist/docx/shape-parse.d.ts +16 -0
- package/dist/docx/shape-parse.d.ts.map +1 -0
- package/dist/docx/shape-svg.d.ts +20 -0
- package/dist/docx/shape-svg.d.ts.map +1 -0
- package/dist/docx/table-model.d.ts +4 -0
- package/dist/docx/table-model.d.ts.map +1 -1
- package/dist/docx/ui/content-control-commands.d.ts +37 -0
- package/dist/docx/ui/content-control-commands.d.ts.map +1 -0
- package/dist/docx/ui/content-control-guard.d.ts +8 -0
- package/dist/docx/ui/content-control-guard.d.ts.map +1 -0
- package/dist/docx/ui/content-control-spans.d.ts +19 -0
- package/dist/docx/ui/content-control-spans.d.ts.map +1 -0
- package/dist/docx/ui/index.cjs +3132 -506
- package/dist/docx/ui/index.d.ts +3 -0
- package/dist/docx/ui/index.d.ts.map +1 -1
- package/dist/docx/ui/index.mjs +3117 -507
- package/dist/docx/ui/inline-content-schema.d.ts.map +1 -1
- package/dist/docx/ui/paragraph-attributes.d.ts.map +1 -1
- package/dist/docx/ui/ribbon-action-ids.d.ts +1 -1
- package/dist/docx/ui/ribbon-action-ids.d.ts.map +1 -1
- package/dist/docx/ui/run-adapter.d.ts.map +1 -1
- package/dist/docx/ui/run-compare.d.ts.map +1 -1
- package/dist/docx/ui/run-mark-properties.d.ts.map +1 -1
- package/dist/docx/ui/run-marks.d.ts.map +1 -1
- package/dist/docx/ui/schema-marks.d.ts +16 -1
- package/dist/docx/ui/schema-marks.d.ts.map +1 -1
- package/dist/docx/ui/table-structure-guard.d.ts.map +1 -1
- package/dist/docx/write-block-placement.d.ts +9 -0
- package/dist/docx/write-block-placement.d.ts.map +1 -0
- package/dist/docx/write-content-control.d.ts +12 -0
- package/dist/docx/write-content-control.d.ts.map +1 -0
- package/dist/docx/write-drawing.d.ts +2 -0
- package/dist/docx/write-drawing.d.ts.map +1 -1
- package/dist/docx/write-inline.d.ts.map +1 -1
- package/dist/docx/write-paragraph.d.ts.map +1 -1
- package/dist/docx/write-shape.d.ts +16 -0
- package/dist/docx/write-shape.d.ts.map +1 -0
- package/dist/docx/write-table.d.ts.map +1 -1
- package/dist/docx/write.d.ts.map +1 -1
- package/dist/drawingml/index.cjs +24 -0
- package/dist/drawingml/index.mjs +24 -0
- package/dist/geometry/index.cjs +63 -48
- package/dist/geometry/index.mjs +63 -48
- package/dist/geometry/preset-shape-definitions-table.d.ts.map +1 -1
- package/dist/i18n/index.cjs +266 -0
- package/dist/i18n/index.d.ts +1 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.mjs +265 -1
- package/dist/i18n/option-strings.d.ts +17 -0
- package/dist/i18n/option-strings.d.ts.map +1 -0
- package/dist/index.cjs +4558 -1579
- package/dist/index.mjs +4558 -1579
- package/dist/math/equation-gallery.d.ts +10 -0
- package/dist/math/equation-gallery.d.ts.map +1 -0
- package/dist/math/index.cjs +777 -139
- package/dist/math/index.d.ts +3 -0
- package/dist/math/index.d.ts.map +1 -1
- package/dist/math/index.mjs +772 -140
- package/dist/math/latex-omml-siblings.d.ts.map +1 -1
- package/dist/math/latex-to-omml.d.ts.map +1 -1
- package/dist/math/omml-box-grouped.d.ts +9 -0
- package/dist/math/omml-box-grouped.d.ts.map +1 -0
- package/dist/math/omml-box-layout.d.ts +15 -0
- package/dist/math/omml-box-layout.d.ts.map +1 -0
- package/dist/math/omml-box-structures.d.ts +7 -0
- package/dist/math/omml-box-structures.d.ts.map +1 -0
- package/dist/math/omml-box.d.ts +85 -0
- package/dist/math/omml-box.d.ts.map +1 -0
- package/dist/math/omml-dom.d.ts.map +1 -1
- package/dist/math/omml-mathml-converters.d.ts.map +1 -1
- package/dist/math/omml-svg.d.ts +14 -0
- package/dist/math/omml-svg.d.ts.map +1 -0
- package/dist/math/omml-to-xml.d.ts +10 -0
- package/dist/math/omml-to-xml.d.ts.map +1 -0
- package/dist/opc/embedded-packages.d.ts.map +1 -1
- package/dist/opc/index.cjs +257 -22
- package/dist/opc/index.d.ts +1 -0
- package/dist/opc/index.d.ts.map +1 -1
- package/dist/opc/index.mjs +251 -23
- package/dist/opc/package.d.ts.map +1 -1
- package/dist/opc/signature/detection.d.ts +22 -6
- package/dist/opc/signature/detection.d.ts.map +1 -1
- package/dist/opc/signature/index.d.ts +1 -1
- package/dist/opc/signature/index.d.ts.map +1 -1
- package/dist/opc/signature/xml-utils.d.ts.map +1 -1
- package/dist/opc/zip-limits.d.ts +52 -0
- package/dist/opc/zip-limits.d.ts.map +1 -0
- package/dist/pptx/automation/index.cjs +1848 -1320
- package/dist/pptx/automation/index.d.ts +4 -4
- package/dist/pptx/automation/index.mjs +6 -6
- package/dist/pptx/chunks/{elements-DmbzOhFu.d.ts → elements-tK7xnWeS.d.ts} +20 -9
- package/dist/pptx/chunks/elements-tK7xnWeS.d.ts.map +1 -0
- package/dist/pptx/chunks/{index-Cija6Dih.d.ts → index-BSpNQuvz.d.ts} +30 -5
- package/dist/pptx/chunks/{index-Cija6Dih.d.ts.map → index-BSpNQuvz.d.ts.map} +1 -1
- package/dist/pptx/chunks/{index-BmvOxbsh.d.ts → index-DS9Y4Ne3.d.ts} +25 -9
- package/dist/pptx/chunks/index-DS9Y4Ne3.d.ts.map +1 -0
- package/dist/pptx/chunks/inspection-status-DjiWd_Aa.d.ts.map +1 -1
- package/dist/pptx/chunks/{text-operations-sXxhsKDd.d.ts → text-operations-BdD_UQ11.d.ts} +2 -2
- package/dist/pptx/chunks/{text-operations-sXxhsKDd.d.ts.map → text-operations-BdD_UQ11.d.ts.map} +1 -1
- package/dist/pptx/cli/index.cjs +1795 -1275
- package/dist/pptx/cli/index.d.ts +1 -1
- package/dist/pptx/cli/index.mjs +5 -5
- package/dist/pptx/converter/index.cjs +80 -54
- package/dist/pptx/converter/index.d.ts +1 -1
- package/dist/pptx/converter/index.mjs +3 -3
- package/dist/pptx/editor/render/find-replace.cjs +14 -14
- package/dist/pptx/editor/render/find-replace.d.ts +2 -2
- package/dist/pptx/editor/render/find-replace.mjs +1 -1
- package/dist/pptx/editor/render/slide-operations.cjs +8 -8
- package/dist/pptx/editor/render/slide-operations.mjs +2 -2
- package/dist/pptx/editor/render/text-runs-style-patch.d.ts +1 -1
- package/dist/pptx/editor/render/text-style-scope.d.ts +1 -1
- package/dist/pptx/index.cjs +1117 -351
- package/dist/pptx/index.d.ts +5 -5
- package/dist/pptx/index.mjs +6 -6
- package/dist/pptx/signature-node/index.cjs +342 -65
- package/dist/pptx/signature-node/index.d.ts +12 -1
- package/dist/pptx/signature-node/index.d.ts.map +1 -1
- package/dist/pptx/signature-node/index.mjs +112 -52
- package/dist/teams/activity-feed.d.ts +19 -0
- package/dist/teams/activity-feed.d.ts.map +1 -0
- package/dist/teams/activity-state.d.ts +12 -0
- package/dist/teams/activity-state.d.ts.map +1 -0
- package/dist/teams/activity.d.ts +52 -0
- package/dist/teams/activity.d.ts.map +1 -0
- package/dist/teams/calendar.d.ts +57 -0
- package/dist/teams/calendar.d.ts.map +1 -0
- package/dist/teams/chat-actions.d.ts +20 -0
- package/dist/teams/chat-actions.d.ts.map +1 -0
- package/dist/teams/chat-rooms.d.ts +42 -0
- package/dist/teams/chat-rooms.d.ts.map +1 -0
- package/dist/teams/chat-view.d.ts +56 -0
- package/dist/teams/chat-view.d.ts.map +1 -0
- package/dist/teams/chat.d.ts +25 -3
- package/dist/teams/chat.d.ts.map +1 -1
- package/dist/teams/chats.d.ts +52 -0
- package/dist/teams/chats.d.ts.map +1 -0
- package/dist/teams/ics-timezone.d.ts +17 -0
- package/dist/teams/ics-timezone.d.ts.map +1 -0
- package/dist/teams/ics.d.ts +20 -0
- package/dist/teams/ics.d.ts.map +1 -0
- package/dist/teams/index.cjs +12462 -7011
- package/dist/teams/index.d.ts +25 -0
- package/dist/teams/index.d.ts.map +1 -1
- package/dist/teams/index.mjs +12349 -7012
- package/dist/teams/meeting-actions.d.ts +31 -0
- package/dist/teams/meeting-actions.d.ts.map +1 -0
- package/dist/teams/meeting-exceptions.d.ts +28 -0
- package/dist/teams/meeting-exceptions.d.ts.map +1 -0
- package/dist/teams/meeting-reminders.d.ts +13 -0
- package/dist/teams/meeting-reminders.d.ts.map +1 -0
- package/dist/teams/meetings.d.ts +71 -0
- package/dist/teams/meetings.d.ts.map +1 -0
- package/dist/teams/mention-text.d.ts +11 -0
- package/dist/teams/mention-text.d.ts.map +1 -0
- package/dist/teams/mentions.d.ts +68 -0
- package/dist/teams/mentions.d.ts.map +1 -0
- package/dist/teams/model.d.ts +7 -0
- package/dist/teams/model.d.ts.map +1 -1
- package/dist/teams/notifications.d.ts +21 -0
- package/dist/teams/notifications.d.ts.map +1 -0
- package/dist/teams/pins.d.ts +22 -0
- package/dist/teams/pins.d.ts.map +1 -0
- package/dist/teams/presence-controller.d.ts +39 -0
- package/dist/teams/presence-controller.d.ts.map +1 -0
- package/dist/teams/presence.d.ts +55 -0
- package/dist/teams/presence.d.ts.map +1 -0
- package/dist/teams/recurrence.d.ts +18 -0
- package/dist/teams/recurrence.d.ts.map +1 -0
- package/dist/teams/roster.d.ts +12 -0
- package/dist/teams/roster.d.ts.map +1 -0
- package/dist/teams/server-config.d.ts +23 -2
- package/dist/teams/server-config.d.ts.map +1 -1
- package/dist/teams/server-session.d.ts +19 -0
- package/dist/teams/server-session.d.ts.map +1 -0
- package/dist/teams/shared-chat.d.ts +83 -0
- package/dist/teams/shared-chat.d.ts.map +1 -0
- package/dist/teams/store.d.ts +79 -5
- package/dist/teams/store.d.ts.map +1 -1
- package/dist/teams/sync-transport.d.ts +12 -0
- package/dist/teams/sync-transport.d.ts.map +1 -0
- package/dist/teams/time-zone.d.ts +32 -0
- package/dist/teams/time-zone.d.ts.map +1 -0
- package/dist/teams/view.d.ts +8 -0
- package/dist/teams/view.d.ts.map +1 -1
- package/dist/teams/workspace.d.ts +23 -4
- package/dist/teams/workspace.d.ts.map +1 -1
- package/dist/visio/edit-connector-follow.d.ts +15 -0
- package/dist/visio/edit-connector-follow.d.ts.map +1 -0
- package/dist/visio/edit-connector-obstacles.d.ts +9 -3
- package/dist/visio/edit-connector-obstacles.d.ts.map +1 -1
- package/dist/visio/edit-connector-reroute.d.ts.map +1 -1
- package/dist/visio/edit-connector.d.ts.map +1 -1
- package/dist/visio/edit-master-add.d.ts +37 -0
- package/dist/visio/edit-master-add.d.ts.map +1 -0
- package/dist/visio/edit-master-drop.d.ts +6 -0
- package/dist/visio/edit-master-drop.d.ts.map +1 -1
- package/dist/visio/edit-recalculate-index.d.ts +5 -0
- package/dist/visio/edit-recalculate-index.d.ts.map +1 -1
- package/dist/visio/edit-recalculate-values.d.ts.map +1 -1
- package/dist/visio/edit-stencil-connector-layout.d.ts +2 -0
- package/dist/visio/edit-stencil-connector-layout.d.ts.map +1 -1
- package/dist/visio/edit-stencil-connector.d.ts +1 -0
- package/dist/visio/edit-stencil-connector.d.ts.map +1 -1
- package/dist/visio/edit-stencil-import.d.ts +10 -0
- package/dist/visio/edit-stencil-import.d.ts.map +1 -0
- package/dist/visio/edit-stencil-line.d.ts +29 -0
- package/dist/visio/edit-stencil-line.d.ts.map +1 -0
- package/dist/visio/edit-stencil-master.d.ts +3 -8
- package/dist/visio/edit-stencil-master.d.ts.map +1 -1
- package/dist/visio/edit.d.ts.map +1 -1
- package/dist/visio/formula-evaluate.d.ts.map +1 -1
- package/dist/visio/formula-math-functions.d.ts +11 -0
- package/dist/visio/formula-math-functions.d.ts.map +1 -0
- package/dist/visio/formula-text-functions.d.ts +23 -0
- package/dist/visio/formula-text-functions.d.ts.map +1 -0
- package/dist/visio/formula.d.ts.map +1 -1
- package/dist/visio/index.cjs +2552 -1833
- package/dist/visio/index.d.ts +1 -0
- package/dist/visio/index.d.ts.map +1 -1
- package/dist/visio/index.mjs +2552 -1834
- package/dist/visio/parser.d.ts +6 -0
- package/dist/visio/parser.d.ts.map +1 -1
- package/dist/visio/stencil-file.d.ts +14 -0
- package/dist/visio/stencil-file.d.ts.map +1 -0
- package/dist/visio/ui/index.cjs +2398 -1679
- package/dist/visio/ui/index.mjs +2398 -1680
- package/dist/visio/ui/master-drop.d.ts +10 -0
- package/dist/visio/ui/master-drop.d.ts.map +1 -1
- package/dist/xlsx/edit/cell-values.d.ts.map +1 -1
- package/dist/xlsx/edit/clipboard-html-parse.d.ts +4 -0
- package/dist/xlsx/edit/clipboard-html-parse.d.ts.map +1 -1
- package/dist/xlsx/edit/data-table.d.ts +38 -0
- package/dist/xlsx/edit/data-table.d.ts.map +1 -0
- package/dist/xlsx/edit/drawings.d.ts.map +1 -1
- package/dist/xlsx/edit/goal-seek.d.ts +30 -0
- package/dist/xlsx/edit/goal-seek.d.ts.map +1 -0
- package/dist/xlsx/edit/goal-solver.d.ts +20 -0
- package/dist/xlsx/edit/goal-solver.d.ts.map +1 -0
- package/dist/xlsx/edit/history.d.ts +1 -1
- package/dist/xlsx/edit/history.d.ts.map +1 -1
- package/dist/xlsx/edit/index.d.ts +5 -0
- package/dist/xlsx/edit/index.d.ts.map +1 -1
- package/dist/xlsx/edit/input-text.d.ts.map +1 -1
- package/dist/xlsx/edit/pivots.d.ts +2 -1
- package/dist/xlsx/edit/pivots.d.ts.map +1 -1
- package/dist/xlsx/edit/scenarios.d.ts +41 -0
- package/dist/xlsx/edit/scenarios.d.ts.map +1 -0
- package/dist/xlsx/edit/session.d.ts.map +1 -1
- package/dist/xlsx/edit/slicers.d.ts +34 -0
- package/dist/xlsx/edit/slicers.d.ts.map +1 -0
- package/dist/xlsx/edit/table-edits.d.ts.map +1 -1
- package/dist/xlsx/edit/timelines.d.ts +26 -0
- package/dist/xlsx/edit/timelines.d.ts.map +1 -0
- package/dist/xlsx/edit/types.d.ts +39 -0
- package/dist/xlsx/edit/types.d.ts.map +1 -1
- package/dist/xlsx/formula/context.d.ts +13 -0
- package/dist/xlsx/formula/context.d.ts.map +1 -1
- package/dist/xlsx/formula/engine.d.ts.map +1 -1
- package/dist/xlsx/formula/evaluator.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/amordegrc.d.ts +6 -0
- package/dist/xlsx/formula/functions/amordegrc.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/bahttext.d.ts +4 -0
- package/dist/xlsx/formula/functions/bahttext.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/bessel.d.ts +7 -0
- package/dist/xlsx/formula/functions/bessel.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/bonds.d.ts +3 -0
- package/dist/xlsx/formula/functions/bonds.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/engineering.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/financial.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/getpivotdata.d.ts +2 -0
- package/dist/xlsx/formula/functions/getpivotdata.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/groupby.d.ts +3 -0
- package/dist/xlsx/formula/functions/groupby.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/helpers.d.ts +3 -2
- package/dist/xlsx/formula/functions/helpers.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/logical.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/modern.d.ts +3 -0
- package/dist/xlsx/formula/functions/modern.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/odd-securities.d.ts +3 -0
- package/dist/xlsx/formula/functions/odd-securities.d.ts.map +1 -0
- package/dist/xlsx/formula/functions/registry.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/text-regex.d.ts +8 -0
- package/dist/xlsx/formula/functions/text-regex.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/text.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/wildcard.d.ts +8 -0
- package/dist/xlsx/formula/functions/wildcard.d.ts.map +1 -0
- package/dist/xlsx/formula/values.d.ts +11 -0
- package/dist/xlsx/formula/values.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +11696 -4994
- package/dist/xlsx/index.d.ts +1 -0
- package/dist/xlsx/index.d.ts.map +1 -1
- package/dist/xlsx/index.mjs +11612 -4994
- package/dist/xlsx/layout/chart-view.d.ts.map +1 -1
- package/dist/xlsx/layout/header-footer-edit.d.ts +16 -0
- package/dist/xlsx/layout/header-footer-edit.d.ts.map +1 -0
- package/dist/xlsx/layout/index.d.ts +3 -0
- package/dist/xlsx/layout/index.d.ts.map +1 -1
- package/dist/xlsx/layout/page-break-view.d.ts +39 -0
- package/dist/xlsx/layout/page-break-view.d.ts.map +1 -0
- package/dist/xlsx/layout/page-view.d.ts +69 -0
- package/dist/xlsx/layout/page-view.d.ts.map +1 -0
- package/dist/xlsx/layout/ref-evaluator.d.ts.map +1 -1
- package/dist/xlsx/load/index.cjs +5718 -2191
- package/dist/xlsx/load/index.mjs +5717 -2190
- package/dist/xlsx/model-pivots.d.ts +88 -2
- package/dist/xlsx/model-pivots.d.ts.map +1 -1
- package/dist/xlsx/model-slicers.d.ts +146 -0
- package/dist/xlsx/model-slicers.d.ts.map +1 -0
- package/dist/xlsx/model-whatif.d.ts +51 -0
- package/dist/xlsx/model-whatif.d.ts.map +1 -0
- package/dist/xlsx/model.d.ts +26 -1
- package/dist/xlsx/model.d.ts.map +1 -1
- package/dist/xlsx/pivot/admission.d.ts.map +1 -1
- package/dist/xlsx/pivot/aggregate.d.ts +15 -6
- package/dist/xlsx/pivot/aggregate.d.ts.map +1 -1
- package/dist/xlsx/pivot/axes.d.ts +6 -0
- package/dist/xlsx/pivot/axes.d.ts.map +1 -0
- package/dist/xlsx/pivot/cache-xml.d.ts.map +1 -1
- package/dist/xlsx/pivot/columns.d.ts +48 -0
- package/dist/xlsx/pivot/columns.d.ts.map +1 -0
- package/dist/xlsx/pivot/data.d.ts +9 -3
- package/dist/xlsx/pivot/data.d.ts.map +1 -1
- package/dist/xlsx/pivot/date-axes.d.ts +12 -0
- package/dist/xlsx/pivot/date-axes.d.ts.map +1 -0
- package/dist/xlsx/pivot/date-group-read.d.ts +11 -0
- package/dist/xlsx/pivot/date-group-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/date-groups.d.ts +60 -0
- package/dist/xlsx/pivot/date-groups.d.ts.map +1 -0
- package/dist/xlsx/pivot/date-read.d.ts +10 -0
- package/dist/xlsx/pivot/date-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/dates.d.ts +17 -0
- package/dist/xlsx/pivot/dates.d.ts.map +1 -0
- package/dist/xlsx/pivot/group-read.d.ts +9 -0
- package/dist/xlsx/pivot/group-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/groups.d.ts +31 -0
- package/dist/xlsx/pivot/groups.d.ts.map +1 -0
- package/dist/xlsx/pivot/hierarchy.d.ts +4 -1
- package/dist/xlsx/pivot/hierarchy.d.ts.map +1 -1
- package/dist/xlsx/pivot/index.d.ts +7 -0
- package/dist/xlsx/pivot/index.d.ts.map +1 -1
- package/dist/xlsx/pivot/item-filters-read.d.ts +7 -0
- package/dist/xlsx/pivot/item-filters-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/item-filters.d.ts +23 -0
- package/dist/xlsx/pivot/item-filters.d.ts.map +1 -0
- package/dist/xlsx/pivot/measures.d.ts +6 -4
- package/dist/xlsx/pivot/measures.d.ts.map +1 -1
- package/dist/xlsx/pivot/nested.d.ts +8 -0
- package/dist/xlsx/pivot/nested.d.ts.map +1 -0
- package/dist/xlsx/pivot/page-filter-admission.d.ts.map +1 -1
- package/dist/xlsx/pivot/page-filter.d.ts.map +1 -1
- package/dist/xlsx/pivot/read.d.ts +2 -1
- package/dist/xlsx/pivot/read.d.ts.map +1 -1
- package/dist/xlsx/pivot/subtotal-read.d.ts +9 -0
- package/dist/xlsx/pivot/subtotal-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/subtotals.d.ts +23 -0
- package/dist/xlsx/pivot/subtotals.d.ts.map +1 -0
- package/dist/xlsx/pivot/table-xml.d.ts +1 -1
- package/dist/xlsx/pivot/table-xml.d.ts.map +1 -1
- package/dist/xlsx/pivot/values-axis.d.ts +2 -2
- package/dist/xlsx/pivot/values-axis.d.ts.map +1 -1
- package/dist/xlsx/read/chart-ex.d.ts +9 -0
- package/dist/xlsx/read/chart-ex.d.ts.map +1 -0
- package/dist/xlsx/read/chart.d.ts.map +1 -1
- package/dist/xlsx/read/drawing.d.ts.map +1 -1
- package/dist/xlsx/read/load.d.ts.map +1 -1
- package/dist/xlsx/read/package.d.ts +2 -1
- package/dist/xlsx/read/package.d.ts.map +1 -1
- package/dist/xlsx/read/scenarios.d.ts +4 -0
- package/dist/xlsx/read/scenarios.d.ts.map +1 -0
- package/dist/xlsx/read/sheet-data.d.ts.map +1 -1
- package/dist/xlsx/read/sheet-props.d.ts.map +1 -1
- package/dist/xlsx/read/tables.d.ts +3 -0
- package/dist/xlsx/read/tables.d.ts.map +1 -1
- package/dist/xlsx/read/worksheet.d.ts.map +1 -1
- package/dist/xlsx/slicer/book.d.ts +16 -0
- package/dist/xlsx/slicer/book.d.ts.map +1 -0
- package/dist/xlsx/slicer/frame.d.ts +14 -0
- package/dist/xlsx/slicer/frame.d.ts.map +1 -0
- package/dist/xlsx/slicer/index.d.ts +10 -0
- package/dist/xlsx/slicer/index.d.ts.map +1 -0
- package/dist/xlsx/slicer/items.d.ts +30 -0
- package/dist/xlsx/slicer/items.d.ts.map +1 -0
- package/dist/xlsx/slicer/layout.d.ts +67 -0
- package/dist/xlsx/slicer/layout.d.ts.map +1 -0
- package/dist/xlsx/slicer/read-slicers.d.ts +11 -0
- package/dist/xlsx/slicer/read-slicers.d.ts.map +1 -0
- package/dist/xlsx/slicer/read-timelines.d.ts +5 -0
- package/dist/xlsx/slicer/read-timelines.d.ts.map +1 -0
- package/dist/xlsx/slicer/read.d.ts +26 -0
- package/dist/xlsx/slicer/read.d.ts.map +1 -0
- package/dist/xlsx/slicer/select.d.ts +10 -0
- package/dist/xlsx/slicer/select.d.ts.map +1 -0
- package/dist/xlsx/slicer/styles.d.ts +36 -0
- package/dist/xlsx/slicer/styles.d.ts.map +1 -0
- package/dist/xlsx/slicer/table-filter.d.ts +28 -0
- package/dist/xlsx/slicer/table-filter.d.ts.map +1 -0
- package/dist/xlsx/slicer/timeline-periods.d.ts +35 -0
- package/dist/xlsx/slicer/timeline-periods.d.ts.map +1 -0
- package/dist/xlsx/slicer/timeline-view.d.ts +60 -0
- package/dist/xlsx/slicer/timeline-view.d.ts.map +1 -0
- package/dist/xlsx/slicer/write-plan.d.ts +31 -0
- package/dist/xlsx/slicer/write-plan.d.ts.map +1 -0
- package/dist/xlsx/slicer/write-timeline.d.ts +7 -0
- package/dist/xlsx/slicer/write-timeline.d.ts.map +1 -0
- package/dist/xlsx/slicer/write-xml.d.ts +17 -0
- package/dist/xlsx/slicer/write-xml.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/i18n/index.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/pivots.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/print-layout.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/slicers.d.ts +3 -0
- package/dist/xlsx/ui/commands/i18n/slicers.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/i18n/what-if.d.ts +3 -0
- package/dist/xlsx/ui/commands/i18n/what-if.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/icons.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/slicers.d.ts +37 -0
- package/dist/xlsx/ui/commands/slicers.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/what-if.d.ts +4 -0
- package/dist/xlsx/ui/commands/what-if.d.ts.map +1 -0
- package/dist/xlsx/ui/commands.d.ts +2 -0
- package/dist/xlsx/ui/commands.d.ts.map +1 -1
- package/dist/xlsx/ui/index.cjs +6999 -3052
- package/dist/xlsx/ui/index.d.ts +2 -0
- package/dist/xlsx/ui/index.d.ts.map +1 -1
- package/dist/xlsx/ui/index.mjs +6994 -3053
- package/dist/xlsx/ui/locales/de/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/de/options.d.ts +2 -0
- package/dist/xlsx/ui/locales/de/options.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/de/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/en/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/en/options.d.ts +2 -0
- package/dist/xlsx/ui/locales/en/options.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/en/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/es/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/es/options.d.ts +2 -0
- package/dist/xlsx/ui/locales/es/options.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/es/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/fr/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/fr/options.d.ts +2 -0
- package/dist/xlsx/ui/locales/fr/options.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/fr/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/zh-CN/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/zh-CN/options.d.ts +2 -0
- package/dist/xlsx/ui/locales/zh-CN/options.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/zh-CN/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/ribbon/tabs/review-view.d.ts.map +1 -1
- package/dist/xlsx/write/carried-refs.d.ts.map +1 -1
- package/dist/xlsx/write/drawing.d.ts.map +1 -1
- package/dist/xlsx/write/package-writer.d.ts +2 -0
- package/dist/xlsx/write/package-writer.d.ts.map +1 -1
- package/dist/xlsx/write/save.d.ts.map +1 -1
- package/dist/xlsx/write/scenarios.d.ts +4 -0
- package/dist/xlsx/write/scenarios.d.ts.map +1 -0
- package/dist/xlsx/write/sheet-data.d.ts.map +1 -1
- package/dist/xlsx/write/sheet-parts.d.ts +1 -0
- package/dist/xlsx/write/sheet-parts.d.ts.map +1 -1
- package/dist/xlsx/write/sheet-props.d.ts.map +1 -1
- package/dist/xlsx/write/table-patch.d.ts.map +1 -1
- package/dist/xlsx/write/tables.d.ts.map +1 -1
- package/dist/xlsx/write/worksheet.d.ts.map +1 -1
- package/dist/xml/index.cjs +28 -0
- package/dist/xml/index.mjs +27 -1
- package/dist/xml/namespaces.d.ts +2 -0
- package/dist/xml/namespaces.d.ts.map +1 -1
- package/dist/xml/xml.d.ts +15 -0
- package/dist/xml/xml.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/PptxHandler-RWTOUCLC.mjs +0 -3
- package/dist/PptxHandler-UU4ZCT6H.cjs +0 -12
- package/dist/chunk-KBIJI6P5.mjs +0 -166
- package/dist/pptx/chunks/elements-DmbzOhFu.d.ts.map +0 -1
- package/dist/pptx/chunks/index-BmvOxbsh.d.ts.map +0 -1
package/dist/opc/index.mjs
CHANGED
|
@@ -71,6 +71,8 @@ var NS = {
|
|
|
71
71
|
a: "http://schemas.openxmlformats.org/drawingml/2006/main",
|
|
72
72
|
/** DrawingML chart. */
|
|
73
73
|
c: "http://schemas.openxmlformats.org/drawingml/2006/chart",
|
|
74
|
+
/** Office 2016 extended charts (waterfall, histogram, funnel...; `cx:chartSpace`). */
|
|
75
|
+
cx: "http://schemas.microsoft.com/office/drawing/2014/chartex",
|
|
74
76
|
/** Office 2010 chart extensions, including built-in modern chart styles. */
|
|
75
77
|
c14: "http://schemas.microsoft.com/office/drawing/2007/8/2/chart",
|
|
76
78
|
/** DrawingML diagram (SmartArt) main. */
|
|
@@ -126,10 +128,34 @@ var NS = {
|
|
|
126
128
|
/** XML itself (`xml:space`). */
|
|
127
129
|
xml: "http://www.w3.org/XML/1998/namespace"
|
|
128
130
|
};
|
|
131
|
+
var DEFAULT_XML_LIMITS = {
|
|
132
|
+
maxDepth: 512,
|
|
133
|
+
maxNodes: 5e6
|
|
134
|
+
};
|
|
135
|
+
var MARKUP_RE = /<!--[\s\S]*?-->|<!\[CDATA\[[\s\S]*?\]\]>|<\?[\s\S]*?\?>|<(\/?)([^\s\/>]+)(?:\s+[^\s=\/>]+\s*=\s*(?:"[^"]*"|'[^']*'))*\s*(\/?)>/g;
|
|
136
|
+
function checkXmlLimits(xml, label, limits = {}) {
|
|
137
|
+
const maxDepth = limits.maxDepth ?? DEFAULT_XML_LIMITS.maxDepth;
|
|
138
|
+
const maxNodes = limits.maxNodes ?? DEFAULT_XML_LIMITS.maxNodes;
|
|
139
|
+
let depth = 0;
|
|
140
|
+
let nodes = 0;
|
|
141
|
+
for (const match of xml.matchAll(MARKUP_RE)) {
|
|
142
|
+
const [, closing, name, selfClosing] = match;
|
|
143
|
+
if (name === void 0) continue;
|
|
144
|
+
if (closing) {
|
|
145
|
+
depth--;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
nodes++;
|
|
149
|
+
if (nodes > maxNodes) throw new Error(`${label} XML exceeds the limit of ${maxNodes} elements`);
|
|
150
|
+
if (!selfClosing && ++depth > maxDepth)
|
|
151
|
+
throw new Error(`${label} XML exceeds the nesting depth limit of ${maxDepth}`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
129
154
|
function parseXml(xml, options = {}) {
|
|
130
155
|
const label = options.label ?? "OOXML";
|
|
131
156
|
if (/<!DOCTYPE|<!ENTITY/i.test(xml))
|
|
132
157
|
throw new Error(`${label} XML with DTD or entity declarations is not supported`);
|
|
158
|
+
checkXmlLimits(xml, label, options.limits);
|
|
133
159
|
let parseError = "";
|
|
134
160
|
let parsed;
|
|
135
161
|
try {
|
|
@@ -259,7 +285,9 @@ var XML_DECLARATION = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
|
|
|
259
285
|
var EMPTY_TYPES = `${XML_DECLARATION}<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"></Types>`;
|
|
260
286
|
var EMPTY_RELS = `${XML_DECLARATION}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"></Relationships>`;
|
|
261
287
|
function attr2(tag, name) {
|
|
262
|
-
|
|
288
|
+
const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
289
|
+
const match = new RegExp(`(?<=[\\s<])${escaped}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`).exec(tag);
|
|
290
|
+
return match ? match[1] ?? match[2] : void 0;
|
|
263
291
|
}
|
|
264
292
|
async function ensureContentTypeOverride(zip, partName, contentType) {
|
|
265
293
|
const xml = await zip.file(CONTENT_TYPES_PATH)?.async("string") ?? EMPTY_TYPES;
|
|
@@ -403,8 +431,176 @@ function isStorableHyperlinkHref(href) {
|
|
|
403
431
|
function isOpenableHyperlinkHref(href) {
|
|
404
432
|
return hyperlinkPolicy(href).open;
|
|
405
433
|
}
|
|
434
|
+
var DEFAULT_ZIP_LIMITS = {
|
|
435
|
+
maxInputBytes: 100 * 1024 * 1024,
|
|
436
|
+
maxEntries: 1e4,
|
|
437
|
+
maxEntryBytes: 100 * 1024 * 1024,
|
|
438
|
+
maxTotalBytes: 100 * 1024 * 1024
|
|
439
|
+
};
|
|
440
|
+
var ZipLimitError = class extends Error {
|
|
441
|
+
code = "ZIP_BOMB";
|
|
442
|
+
limit;
|
|
443
|
+
constructor(message, details) {
|
|
444
|
+
super(message);
|
|
445
|
+
this.name = "ZipLimitError";
|
|
446
|
+
this.limit = details.limit;
|
|
447
|
+
}
|
|
448
|
+
};
|
|
449
|
+
var mib = (bytes) => Math.round(bytes / 1048576);
|
|
450
|
+
function isSafePartName(name) {
|
|
451
|
+
if (name.includes("\0") || name.includes("\\")) return false;
|
|
452
|
+
if (/^[A-Za-z]:/u.test(name)) return false;
|
|
453
|
+
const body = name.startsWith("/") ? name.slice(1) : name;
|
|
454
|
+
if (body.startsWith("/")) return false;
|
|
455
|
+
return !body.split("/").some((segment) => segment === "..");
|
|
456
|
+
}
|
|
457
|
+
function declaredEntrySize(entry) {
|
|
458
|
+
const data = entry._data;
|
|
459
|
+
const size = Number(data?.uncompressedSize ?? 0);
|
|
460
|
+
return Number.isFinite(size) && size > 0 ? size : 0;
|
|
461
|
+
}
|
|
462
|
+
function resolveLimits(limits) {
|
|
463
|
+
const create = limits.createError;
|
|
464
|
+
return {
|
|
465
|
+
maxEntries: limits.maxEntries ?? DEFAULT_ZIP_LIMITS.maxEntries,
|
|
466
|
+
maxEntryBytes: limits.maxEntryBytes ?? DEFAULT_ZIP_LIMITS.maxEntryBytes,
|
|
467
|
+
maxTotalBytes: limits.maxTotalBytes ?? DEFAULT_ZIP_LIMITS.maxTotalBytes,
|
|
468
|
+
label: limits.label ?? "ZIP",
|
|
469
|
+
fail: (message, limit) => create ? create(message, { limit }) : new ZipLimitError(message, { limit })
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
function inflateEntryGuarded(entry, alreadyRead, limits) {
|
|
473
|
+
const r = resolveLimits(limits);
|
|
474
|
+
const declared = declaredEntrySize(entry);
|
|
475
|
+
return new Promise((resolvePromise, reject2) => {
|
|
476
|
+
const chunks = [];
|
|
477
|
+
let size = 0;
|
|
478
|
+
let done = false;
|
|
479
|
+
const stream = entry.internalStream("uint8array");
|
|
480
|
+
const abort = (error) => {
|
|
481
|
+
if (done) return;
|
|
482
|
+
done = true;
|
|
483
|
+
stream.pause();
|
|
484
|
+
chunks.length = 0;
|
|
485
|
+
reject2(error);
|
|
486
|
+
};
|
|
487
|
+
stream.on("data", (chunk) => {
|
|
488
|
+
if (done) return;
|
|
489
|
+
size += chunk.byteLength;
|
|
490
|
+
if (size > declared || size > r.maxEntryBytes)
|
|
491
|
+
return abort(
|
|
492
|
+
r.fail(`${r.label} part ${entry.name} inflates past its declared size`, r.maxEntryBytes)
|
|
493
|
+
);
|
|
494
|
+
if (alreadyRead + size > r.maxTotalBytes)
|
|
495
|
+
return abort(
|
|
496
|
+
r.fail(
|
|
497
|
+
`${r.label} package exceeds the ${mib(r.maxTotalBytes)} MiB uncompressed content limit`,
|
|
498
|
+
r.maxTotalBytes
|
|
499
|
+
)
|
|
500
|
+
);
|
|
501
|
+
chunks.push(chunk);
|
|
502
|
+
});
|
|
503
|
+
stream.on("error", (error) => abort(error));
|
|
504
|
+
stream.on("end", () => {
|
|
505
|
+
if (done) return;
|
|
506
|
+
done = true;
|
|
507
|
+
if (chunks.length === 1 && chunks[0]) return resolvePromise(chunks[0]);
|
|
508
|
+
const out = new Uint8Array(size);
|
|
509
|
+
let offset = 0;
|
|
510
|
+
for (const chunk of chunks) {
|
|
511
|
+
out.set(chunk, offset);
|
|
512
|
+
offset += chunk.byteLength;
|
|
513
|
+
}
|
|
514
|
+
resolvePromise(out);
|
|
515
|
+
});
|
|
516
|
+
stream.resume();
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
function toBase64(bytes) {
|
|
520
|
+
let binary = "";
|
|
521
|
+
for (let i = 0; i < bytes.length; i += 32768)
|
|
522
|
+
binary += String.fromCharCode(...bytes.subarray(i, i + 32768));
|
|
523
|
+
return btoa(binary);
|
|
524
|
+
}
|
|
525
|
+
function guardZip(zip, limits = {}) {
|
|
526
|
+
const r = resolveLimits(limits);
|
|
527
|
+
const entries = Object.values(zip.files);
|
|
528
|
+
if (entries.length > r.maxEntries)
|
|
529
|
+
throw r.fail(
|
|
530
|
+
`${r.label} package exceeds the ${r.maxEntries.toLocaleString("en-US")} part limit`,
|
|
531
|
+
r.maxEntries
|
|
532
|
+
);
|
|
533
|
+
let declared = 0;
|
|
534
|
+
for (const entry of entries) {
|
|
535
|
+
const original = entry.unsafeOriginalName;
|
|
536
|
+
if (!isSafePartName(entry.name) || original !== void 0 && !isSafePartName(original))
|
|
537
|
+
throw r.fail(`${r.label} package has an unsafe part name`, r.maxEntries);
|
|
538
|
+
if (entry.dir) continue;
|
|
539
|
+
const size = declaredEntrySize(entry);
|
|
540
|
+
if (size > r.maxEntryBytes)
|
|
541
|
+
throw r.fail(
|
|
542
|
+
`${r.label} part ${entry.name} exceeds the uncompressed part size limit`,
|
|
543
|
+
r.maxEntryBytes
|
|
544
|
+
);
|
|
545
|
+
declared += size;
|
|
546
|
+
}
|
|
547
|
+
if (declared > r.maxTotalBytes)
|
|
548
|
+
throw r.fail(
|
|
549
|
+
`${r.label} package exceeds the ${mib(r.maxTotalBytes)} MiB uncompressed content limit`,
|
|
550
|
+
r.maxTotalBytes
|
|
551
|
+
);
|
|
552
|
+
const produced = /* @__PURE__ */ new Map();
|
|
553
|
+
let total = 0;
|
|
554
|
+
for (const entry of entries) {
|
|
555
|
+
if (entry.dir) continue;
|
|
556
|
+
const inflateOriginal = entry.async.bind(entry);
|
|
557
|
+
entry.async = async (type, onUpdate) => {
|
|
558
|
+
const previous = produced.get(entry.name) ?? 0;
|
|
559
|
+
const bytes = await inflateEntryGuarded(entry, total - previous, limits);
|
|
560
|
+
if (bytes.byteLength > previous) {
|
|
561
|
+
total += bytes.byteLength - previous;
|
|
562
|
+
produced.set(entry.name, bytes.byteLength);
|
|
563
|
+
}
|
|
564
|
+
switch (type) {
|
|
565
|
+
case "uint8array":
|
|
566
|
+
return bytes;
|
|
567
|
+
case "string":
|
|
568
|
+
case "text":
|
|
569
|
+
return new TextDecoder("utf-8", { ignoreBOM: true }).decode(bytes);
|
|
570
|
+
case "arraybuffer":
|
|
571
|
+
return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
|
|
572
|
+
case "base64":
|
|
573
|
+
return toBase64(bytes);
|
|
574
|
+
default:
|
|
575
|
+
return inflateOriginal(type, onUpdate);
|
|
576
|
+
}
|
|
577
|
+
};
|
|
578
|
+
}
|
|
579
|
+
return zip;
|
|
580
|
+
}
|
|
581
|
+
async function openZip(input, limits = {}) {
|
|
582
|
+
const r = resolveLimits(limits);
|
|
583
|
+
const maxInput = limits.maxInputBytes ?? DEFAULT_ZIP_LIMITS.maxInputBytes;
|
|
584
|
+
const bytes = input instanceof Uint8Array ? input : new Uint8Array(input);
|
|
585
|
+
if (bytes.byteLength > maxInput)
|
|
586
|
+
throw r.fail(
|
|
587
|
+
`${r.label} package exceeds the ${mib(maxInput)} MiB compressed input limit`,
|
|
588
|
+
maxInput
|
|
589
|
+
);
|
|
590
|
+
return guardZip(await JSZip.loadAsync(bytes), limits);
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
// opc/embedded-packages.ts
|
|
594
|
+
var EMBEDDED_ZIP_LIMITS = {
|
|
595
|
+
label: "Embedded",
|
|
596
|
+
maxEntries: 2e4,
|
|
597
|
+
maxInputBytes: 200 * 1024 * 1024,
|
|
598
|
+
maxEntryBytes: 200 * 1024 * 1024,
|
|
599
|
+
maxTotalBytes: 500 * 1024 * 1024
|
|
600
|
+
};
|
|
601
|
+
var NESTED_ZIP_LIMITS = { label: "Embedded" };
|
|
406
602
|
async function listEmbeddedPackages(bytes) {
|
|
407
|
-
const zip = await
|
|
603
|
+
const zip = await openZip(bytes, EMBEDDED_ZIP_LIMITS);
|
|
408
604
|
const result = [];
|
|
409
605
|
for (const file of Object.values(zip.files)) {
|
|
410
606
|
if (file.dir || !/^(word|ppt|xl|visio)\/embeddings\/[^/]+$/u.test(file.name)) continue;
|
|
@@ -422,9 +618,9 @@ async function listEmbeddedPackages(bytes) {
|
|
|
422
618
|
async function replaceEmbeddedPackage(parent, path, child) {
|
|
423
619
|
if (!/^(word|ppt|xl|visio)\/embeddings\/[^/]+\.(docx|xlsx|pptx|vsdx)$/u.test(path))
|
|
424
620
|
throw new Error("Only native Office package embeddings can be saved back");
|
|
425
|
-
const zip = await
|
|
621
|
+
const zip = await openZip(parent, EMBEDDED_ZIP_LIMITS);
|
|
426
622
|
if (!zip.file(path)) throw new Error("The embedded document no longer exists");
|
|
427
|
-
const nested = await
|
|
623
|
+
const nested = await openZip(child, NESTED_ZIP_LIMITS);
|
|
428
624
|
if (!nested.file("[Content_Types].xml"))
|
|
429
625
|
throw new Error("The replacement is not an Office package");
|
|
430
626
|
zip.file(path, child);
|
|
@@ -1142,8 +1338,11 @@ async function verifySignatureDigests(signature, getPartContent) {
|
|
|
1142
1338
|
if (typeof globalThis.crypto?.subtle === "undefined") {
|
|
1143
1339
|
return "unverified";
|
|
1144
1340
|
}
|
|
1341
|
+
let checked = 0;
|
|
1342
|
+
let skipped = false;
|
|
1145
1343
|
for (const ref of signature.references) {
|
|
1146
1344
|
if (!ref.digestValue || !ref.uri) {
|
|
1345
|
+
skipped = true;
|
|
1147
1346
|
continue;
|
|
1148
1347
|
}
|
|
1149
1348
|
const algo = ref.digestMethod?.toLowerCase() || "";
|
|
@@ -1155,23 +1354,24 @@ async function verifySignatureDigests(signature, getPartContent) {
|
|
|
1155
1354
|
} else if (algo.includes("sha1") || algo.includes("sha-1")) {
|
|
1156
1355
|
hashAlgo = "SHA-1";
|
|
1157
1356
|
} else {
|
|
1357
|
+
skipped = true;
|
|
1158
1358
|
continue;
|
|
1159
1359
|
}
|
|
1160
1360
|
const content2 = await getPartContent(ref.uri);
|
|
1161
1361
|
if (!content2) {
|
|
1162
|
-
|
|
1362
|
+
return "invalid";
|
|
1163
1363
|
}
|
|
1164
1364
|
try {
|
|
1165
1365
|
const digest = await crypto.subtle.digest(hashAlgo, content2);
|
|
1166
|
-
|
|
1167
|
-
if (digestBase64 !== ref.digestValue) {
|
|
1366
|
+
if (arrayBufferToBase64(digest) !== ref.digestValue) {
|
|
1168
1367
|
return "invalid";
|
|
1169
1368
|
}
|
|
1369
|
+
checked++;
|
|
1170
1370
|
} catch {
|
|
1171
1371
|
return "unverified";
|
|
1172
1372
|
}
|
|
1173
1373
|
}
|
|
1174
|
-
return
|
|
1374
|
+
return checked > 0 && !skipped ? "digestsMatch" : "unverified";
|
|
1175
1375
|
}
|
|
1176
1376
|
function arrayBufferToBase64(buffer) {
|
|
1177
1377
|
const bytes = new Uint8Array(buffer);
|
|
@@ -1232,27 +1432,55 @@ function extractTagAttribute(xml, tagName, attributeName) {
|
|
|
1232
1432
|
const match = xml.match(pattern);
|
|
1233
1433
|
return match?.groups?.["attributeValue"]?.trim();
|
|
1234
1434
|
}
|
|
1435
|
+
var isNameChar = (c) => c !== void 0 && /[\w.-]/.test(c);
|
|
1436
|
+
var isWordChar = (c) => c !== void 0 && /\w/.test(c);
|
|
1437
|
+
function matchName(xml, lowerXml, from, lname) {
|
|
1438
|
+
let pos = from;
|
|
1439
|
+
if (!lowerXml.startsWith(lname, pos)) {
|
|
1440
|
+
let end = pos;
|
|
1441
|
+
while (isNameChar(xml[end])) end++;
|
|
1442
|
+
if (end === pos || xml[end] !== ":") return -1;
|
|
1443
|
+
pos = end + 1;
|
|
1444
|
+
if (!lowerXml.startsWith(lname, pos)) return -1;
|
|
1445
|
+
}
|
|
1446
|
+
return pos + lname.length;
|
|
1447
|
+
}
|
|
1448
|
+
function findTagText(xml, lowerXml, lname, from) {
|
|
1449
|
+
let lt = xml.indexOf("<", from);
|
|
1450
|
+
while (lt !== -1) {
|
|
1451
|
+
const afterName = matchName(xml, lowerXml, lt + 1, lname);
|
|
1452
|
+
if (afterName !== -1 && !isWordChar(xml[afterName])) {
|
|
1453
|
+
const gt = xml.indexOf(">", afterName);
|
|
1454
|
+
if (gt === -1) return null;
|
|
1455
|
+
let close = xml.indexOf("</", gt + 1);
|
|
1456
|
+
while (close !== -1) {
|
|
1457
|
+
const closeEnd = matchName(xml, lowerXml, close + 2, lname);
|
|
1458
|
+
if (closeEnd !== -1 && xml[closeEnd] === ">") {
|
|
1459
|
+
return { text: xml.slice(gt + 1, close), end: closeEnd + 1 };
|
|
1460
|
+
}
|
|
1461
|
+
close = xml.indexOf("</", close + 2);
|
|
1462
|
+
}
|
|
1463
|
+
return null;
|
|
1464
|
+
}
|
|
1465
|
+
lt = xml.indexOf("<", lt + 1);
|
|
1466
|
+
}
|
|
1467
|
+
return null;
|
|
1468
|
+
}
|
|
1235
1469
|
function extractFirstTagText(xml, localName) {
|
|
1236
|
-
const
|
|
1237
|
-
|
|
1238
|
-
"i"
|
|
1239
|
-
);
|
|
1240
|
-
const match = xml.match(pattern);
|
|
1241
|
-
return match?.[2]?.replace(/\s+/g, "").trim() || void 0;
|
|
1470
|
+
const found = findTagText(xml, xml.toLowerCase(), localName.toLowerCase(), 0);
|
|
1471
|
+
return found?.text.replace(/\s+/g, "").trim() || void 0;
|
|
1242
1472
|
}
|
|
1243
1473
|
function extractAllTagText(xml, localName) {
|
|
1244
1474
|
const result = [];
|
|
1245
|
-
const
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
)
|
|
1249
|
-
|
|
1250
|
-
while (match) {
|
|
1251
|
-
const value = match[2]?.replace(/\s+/g, "").trim();
|
|
1475
|
+
const lowerXml = xml.toLowerCase();
|
|
1476
|
+
const lname = localName.toLowerCase();
|
|
1477
|
+
let found = findTagText(xml, lowerXml, lname, 0);
|
|
1478
|
+
while (found) {
|
|
1479
|
+
const value = found.text.replace(/\s+/g, "").trim();
|
|
1252
1480
|
if (value) {
|
|
1253
1481
|
result.push(value);
|
|
1254
1482
|
}
|
|
1255
|
-
|
|
1483
|
+
found = findTagText(xml, lowerXml, lname, found.end);
|
|
1256
1484
|
}
|
|
1257
1485
|
return result;
|
|
1258
1486
|
}
|
|
@@ -1347,4 +1575,4 @@ function computeVerificationStatus(details) {
|
|
|
1347
1575
|
return hasInvalidSignature ? "signature-invalid" : hasRevoked ? "certificate-revoked" : hasTimestampInvalid ? "timestamp-invalid" : hasTimestampUntrusted ? "timestamp-untrusted" : hasMissing ? "reference-missing" : hasMismatch ? "digest-mismatch" : allVerified ? "verified-trusted" : hasUntrusted ? "verified-untrusted" : "present-not-verified";
|
|
1348
1576
|
}
|
|
1349
1577
|
|
|
1350
|
-
export { CORE_PROPERTY_FIELDS, CUSTOM_PROPERTIES_FMTID, PROPERTY_CONTENT_TYPES, PROPERTY_PART_NAMES, RELATIONSHIP_TYPES, STRICT_APP_NAMESPACES, allocateCustomPropertyIds, buildContentTypesXml, buildRelationshipsXml, clonePartGraph, contentTypeForPart, customPropertyFromText, ensureContentTypeDefault, ensureContentTypeOverride, ensureRelationship, findOfficeDocumentPart, formatW3cdtf, fromTitleGroups, getRelationshipId, hyperlinkPolicy, isOpenableHyperlinkHref, isSafeHyperlinkHref, isStorableHyperlinkHref, listEmbeddedPackages, nextRelationshipId, parseAppProperties, parseContentTypes, parseCoreProperties, parseCustomProperties, parseCustomPropertyTexts, parseRelationships, relationshipsPartFor, relativePartTarget, replaceEmbeddedPackage, replaceTitleGroup, resolvePartPath, signature_exports as signature, titleGroups, writeAppProperties, writeCoreProperties, writeCustomProperties };
|
|
1578
|
+
export { CORE_PROPERTY_FIELDS, CUSTOM_PROPERTIES_FMTID, DEFAULT_ZIP_LIMITS, PROPERTY_CONTENT_TYPES, PROPERTY_PART_NAMES, RELATIONSHIP_TYPES, STRICT_APP_NAMESPACES, ZipLimitError, allocateCustomPropertyIds, buildContentTypesXml, buildRelationshipsXml, clonePartGraph, contentTypeForPart, customPropertyFromText, declaredEntrySize, ensureContentTypeDefault, ensureContentTypeOverride, ensureRelationship, findOfficeDocumentPart, formatW3cdtf, fromTitleGroups, getRelationshipId, guardZip, hyperlinkPolicy, inflateEntryGuarded, isOpenableHyperlinkHref, isSafeHyperlinkHref, isSafePartName, isStorableHyperlinkHref, listEmbeddedPackages, nextRelationshipId, openZip, parseAppProperties, parseContentTypes, parseCoreProperties, parseCustomProperties, parseCustomPropertyTexts, parseRelationships, relationshipsPartFor, relativePartTarget, replaceEmbeddedPackage, replaceTitleGroup, resolvePartPath, signature_exports as signature, titleGroups, writeAppProperties, writeCoreProperties, writeCustomProperties };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../opc/package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../opc/package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAmB/B;;;GAGG;AACH,wBAAsB,yBAAyB,CAC9C,GAAG,EAAE,KAAK,EACV,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACvC,GAAG,EAAE,KAAK,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED,4FAA4F;AAC5F,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAKpF"}
|
|
@@ -84,14 +84,30 @@ export declare function getSignaturePathsToStrip(zipEntryPaths: string[]): strin
|
|
|
84
84
|
*/
|
|
85
85
|
export declare function parseSignatureXml(signatureXml: Record<string, unknown>, signaturePath: string): ParsedSignature;
|
|
86
86
|
/**
|
|
87
|
-
*
|
|
87
|
+
* Outcome of {@link verifySignatureDigests}. Deliberately distinct from
|
|
88
|
+
* {@link SignatureStatus} so a digest check cannot be mistaken for trust.
|
|
88
89
|
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
90
|
+
* - `digestsMatch`: every reference was checked and its digest matched.
|
|
91
|
+
* - `invalid`: a digest mismatched, or a referenced part is missing.
|
|
92
|
+
* - `unverified`: nothing could be (fully) checked: no references, no Web
|
|
93
|
+
* Crypto, or a reference was skipped (missing URI or digest value, unknown
|
|
94
|
+
* digest algorithm).
|
|
95
|
+
*/
|
|
96
|
+
export type SignatureDigestStatus = 'digestsMatch' | 'invalid' | 'unverified';
|
|
97
|
+
/**
|
|
98
|
+
* Check a signature's digest references against actual document content.
|
|
99
|
+
*
|
|
100
|
+
* This is an integrity check of the referenced parts only. It does NOT verify
|
|
101
|
+
* `ds:SignatureValue`, the signed-info canonicalization, the certificate chain,
|
|
102
|
+
* validity dates or revocation, so a `digestsMatch` result says nothing about
|
|
103
|
+
* who signed the package. Never present it as "signature valid".
|
|
104
|
+
*
|
|
105
|
+
* Every reference must be checked: a reference without URI or digest value, or
|
|
106
|
+
* with an unknown digest algorithm, makes the result `unverified`; a referenced
|
|
107
|
+
* part that cannot be found makes it `invalid` (the signed content is gone).
|
|
91
108
|
*
|
|
92
|
-
* @param signature - The parsed signature to
|
|
109
|
+
* @param signature - The parsed signature to check.
|
|
93
110
|
* @param getPartContent - Function that retrieves part content by URI.
|
|
94
|
-
* @returns The updated signature status after digest verification.
|
|
95
111
|
*/
|
|
96
|
-
export declare function verifySignatureDigests(signature: ParsedSignature, getPartContent: (uri: string) => Promise<ArrayBuffer | undefined>): Promise<
|
|
112
|
+
export declare function verifySignatureDigests(signature: ParsedSignature, getPartContent: (uri: string) => Promise<ArrayBuffer | undefined>): Promise<SignatureDigestStatus>;
|
|
97
113
|
//# sourceMappingURL=detection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detection.d.ts","sourceRoot":"","sources":["../../../opc/signature/detection.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAEH,qCAAqC;AACrC,MAAM,WAAW,wBAAwB;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,gEAAgE;AAChE,MAAM,WAAW,wBAAwB;IACxC,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qCAAqC;AACrC,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;AAE3F,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC/B,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,mCAAmC;IACnC,MAAM,EAAE,eAAe,CAAC;IACxB,8CAA8C;IAC9C,UAAU,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IAClC,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAGvD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,wBAAwB,CAUzF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE1E;AA2FD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,aAAa,EAAE,MAAM,GACnB,eAAe,CAsEjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC3C,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,GAC/D,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"detection.d.ts","sourceRoot":"","sources":["../../../opc/signature/detection.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAEH,qCAAqC;AACrC,MAAM,WAAW,wBAAwB;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,gEAAgE;AAChE,MAAM,WAAW,wBAAwB;IACxC,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qCAAqC;AACrC,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;AAE3F,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC/B,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,mCAAmC;IACnC,MAAM,EAAE,eAAe,CAAC;IACxB,8CAA8C;IAC9C,UAAU,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IAClC,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAGvD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,wBAAwB,CAUzF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE1E;AA2FD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,aAAa,EAAE,MAAM,GACnB,eAAe,CAsEjB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG,SAAS,GAAG,YAAY,CAAC;AAE9E;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,sBAAsB,CAC3C,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,GAC/D,OAAO,CAAC,qBAAqB,CAAC,CA8ChC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { SIGNATURE_PART_PREFIX, detectDigitalSignatures, getSignaturePathsToStrip, isSignaturePart, parseSignatureXml, verifySignatureDigests, type ParsedSignature, type SignatureCertificateInfo, type SignatureDetectionResult, type SignatureReference, type SignatureStatus, } from './detection.js';
|
|
1
|
+
export { SIGNATURE_PART_PREFIX, detectDigitalSignatures, getSignaturePathsToStrip, isSignaturePart, parseSignatureXml, verifySignatureDigests, type ParsedSignature, type SignatureCertificateInfo, type SignatureDetectionResult, type SignatureReference, type SignatureDigestStatus, type SignatureStatus, } from './detection.js';
|
|
2
2
|
export { DIGEST_ALGORITHM_TO_HASH, DIGEST_ALGORITHM_TO_WEB_CRYPTO, DIGITAL_SIGNATURE_ORIGIN_REL_TYPE, DIGITAL_SIGNATURE_REL_TYPE, ENTERPRISE_FAIL_ON_REVOCATION_UNKNOWN_ENV, ENTERPRISE_REQUIRE_REVOCATION_ENV, ENTERPRISE_REQUIRE_TIMESTAMP_ENV, ENTERPRISE_TRUST_ROOTS_FILE_ENV, ENTERPRISE_TRUST_ROOTS_PEM_ENV, OPC_RELATIONSHIP_TRANSFORM, PPTX_VIEWER_MANIFEST_NS, SUPPORTED_XML_CANON_TRANSFORMS, XMLDSIG_NS, XML_TRANSFORM_ENVELOPED_SIGNATURE, } from './constants.js';
|
|
3
3
|
export type { CertificateRevocationStatus, DigitalSignatureReport, DigitalSignatureVerificationStatus, LoadedSigningMaterial, OfficeSignatureReference, ParsedReferenceTransform, ReferenceTransformResult, SignatureCertificateInfo as SignatureNodeCertificateInfo, SignatureDetail, SignatureDetailStatus, SignatureReferenceCheck, SignatureValidationPolicy, SignOptions, SignResult, TimestampAuthorityStatus, } from './types.js';
|
|
4
4
|
export { escapeXmlAttr, escapeXmlText, extractAllTagText, extractFirstTagText, extractTagAttribute, isValidBase64, } from './xml-utils.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../opc/signature/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,wBAAwB,EACxB,8BAA8B,EAC9B,iCAAiC,EACjC,0BAA0B,EAC1B,yCAAyC,EACzC,iCAAiC,EACjC,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,EAC9B,UAAU,EACV,iCAAiC,GACjC,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,2BAA2B,EAC3B,sBAAsB,EACtB,kCAAkC,EAClC,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,IAAI,4BAA4B,EACxD,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,WAAW,EACX,UAAU,EACV,wBAAwB,GACxB,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../opc/signature/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,wBAAwB,EACxB,8BAA8B,EAC9B,iCAAiC,EACjC,0BAA0B,EAC1B,yCAAyC,EACzC,iCAAiC,EACjC,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,EAC9B,UAAU,EACV,iCAAiC,GACjC,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,2BAA2B,EAC3B,sBAAsB,EACtB,kCAAkC,EAClC,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,IAAI,4BAA4B,EACxD,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,WAAW,EACX,UAAU,EACV,wBAAwB,GACxB,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml-utils.d.ts","sourceRoot":"","sources":["../../../opc/signature/xml-utils.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACnB,MAAM,GAAG,SAAS,CAOpB;
|
|
1
|
+
{"version":3,"file":"xml-utils.d.ts","sourceRoot":"","sources":["../../../opc/signature/xml-utils.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACnB,MAAM,GAAG,SAAS,CAOpB;AAkDD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGtF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAa1E"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import JSZip from 'jszip';
|
|
2
|
+
/** Default limits for a nested or unspecified package. */
|
|
3
|
+
export declare const DEFAULT_ZIP_LIMITS: {
|
|
4
|
+
readonly maxInputBytes: number;
|
|
5
|
+
readonly maxEntries: 10000;
|
|
6
|
+
readonly maxEntryBytes: number;
|
|
7
|
+
readonly maxTotalBytes: number;
|
|
8
|
+
};
|
|
9
|
+
/** Size and hygiene limits applied while opening and reading a zip package. */
|
|
10
|
+
export interface ZipLimits {
|
|
11
|
+
/** Largest accepted package (compressed bytes). */
|
|
12
|
+
maxInputBytes?: number;
|
|
13
|
+
/** Largest number of zip entries. */
|
|
14
|
+
maxEntries?: number;
|
|
15
|
+
/** Largest inflated size of one entry. */
|
|
16
|
+
maxEntryBytes?: number;
|
|
17
|
+
/** Largest total inflated size of every entry read or declared. */
|
|
18
|
+
maxTotalBytes?: number;
|
|
19
|
+
/** Format name used in error messages, such as `DOCX`. */
|
|
20
|
+
label?: string;
|
|
21
|
+
/** Builds the error thrown on a violation; defaults to {@link ZipLimitError}. */
|
|
22
|
+
createError?: (message: string, details: {
|
|
23
|
+
limit: number;
|
|
24
|
+
}) => Error;
|
|
25
|
+
}
|
|
26
|
+
/** Thrown when a package breaks a size, entry-count or part-name limit. */
|
|
27
|
+
export declare class ZipLimitError extends Error {
|
|
28
|
+
readonly code = "ZIP_BOMB";
|
|
29
|
+
readonly limit: number;
|
|
30
|
+
constructor(message: string, details: {
|
|
31
|
+
limit: number;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/** True when a zip entry name is a safe, relative part name (no traversal, drive or backslash). */
|
|
35
|
+
export declare function isSafePartName(name: string): boolean;
|
|
36
|
+
/** The declared (header) uncompressed size of an entry; attacker-controlled. */
|
|
37
|
+
export declare function declaredEntrySize(entry: JSZip.JSZipObject): number;
|
|
38
|
+
/**
|
|
39
|
+
* Inflates one entry chunk by chunk, counting the bytes actually produced. Header sizes are
|
|
40
|
+
* attacker-controlled, so the read is rejected as soon as the entry inflates past its declared
|
|
41
|
+
* size or the running total passes the limit, before the rest of the entry is inflated.
|
|
42
|
+
*/
|
|
43
|
+
export declare function inflateEntryGuarded(entry: JSZip.JSZipObject, alreadyRead: number, limits: ZipLimits): Promise<Uint8Array>;
|
|
44
|
+
/**
|
|
45
|
+
* Validates a loaded zip (entry count, part names, declared sizes) and replaces every entry's
|
|
46
|
+
* `async` so each read inflates through the streaming guard with per-entry and running-total
|
|
47
|
+
* caps. Existing `zip.file(name).async(...)` call sites are therefore protected unchanged.
|
|
48
|
+
*/
|
|
49
|
+
export declare function guardZip(zip: JSZip, limits?: ZipLimits): JSZip;
|
|
50
|
+
/** Opens a zip with the input-size cap, then guards it (see {@link guardZip}). */
|
|
51
|
+
export declare function openZip(input: Uint8Array | ArrayBuffer, limits?: ZipLimits): Promise<JSZip>;
|
|
52
|
+
//# sourceMappingURL=zip-limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip-limits.d.ts","sourceRoot":"","sources":["../../opc/zip-limits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB;aAC9B,aAAa;aACb,UAAU,EAAE,KAAM;aAClB,aAAa;aACb,aAAa;CACJ,CAAC;AAEX,+EAA+E;AAC/E,MAAM,WAAW,SAAS;IACzB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,KAAK,CAAC;CACrE;AAED,2EAA2E;AAC3E,qBAAa,aAAc,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAItD;CACD;AAID,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMpD;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,GAAG,MAAM,CAIlE;AA0BD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,KAAK,CAAC,WAAW,EACxB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,SAAS,GACf,OAAO,CAAC,UAAU,CAAC,CA8CrB;AASD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,GAAE,SAAc,GAAG,KAAK,CA0DlE;AAED,kFAAkF;AAClF,wBAAsB,OAAO,CAC5B,KAAK,EAAE,UAAU,GAAG,WAAW,EAC/B,MAAM,GAAE,SAAc,GACpB,OAAO,CAAC,KAAK,CAAC,CAUhB"}
|