From fbc7c10089470a92c27fc253be024187da5bab89 Mon Sep 17 00:00:00 2001 From: jogibear9988 Date: Mon, 30 Oct 2023 07:39:45 +0000 Subject: [PATCH 1/2] deploy: 997d8d8eda6c2d6773f4c13db810b9975969f812 --- .nojekyll | 0 Readme.html | 138 + api/SVGImage.SVG.Animation.Animate.html | 445 ++ api/SVGImage.SVG.Animation.AnimateColor.html | 255 + api/SVGImage.SVG.Animation.AnimateMotion.html | 255 + ...GImage.SVG.Animation.AnimateTransform.html | 445 ++ ...ge.SVG.Animation.AnimateTransformType.html | 158 + api/SVGImage.SVG.Animation.AnimationBase.html | 325 ++ api/SVGImage.SVG.Animation.html | 150 + api/SVGImage.SVG.ClipArtElement.html | 253 + ...mage.SVG.FileLoaders.FileSystemLoader.html | 257 + ...e.SVG.FileLoaders.IExternalFileLoader.html | 187 + api/SVGImage.SVG.FileLoaders.html | 134 + api/SVGImage.SVG.Fill.eFillRule.html | 152 + api/SVGImage.SVG.Fill.html | 390 ++ api/SVGImage.SVG.Filters.Filter.html | 296 ++ api/SVGImage.SVG.Filters.FilterBaseFe.html | 322 ++ ...mage.SVG.Filters.FilterFeGaussianBlur.html | 414 ++ api/SVGImage.SVG.Filters.html | 135 + ....PaintServers.CurrentColorPaintServer.html | 262 + ...PaintServers.GradientColorPaintServer.html | 362 ++ ...e.SVG.PaintServers.InheritPaintServer.html | 262 + ...ervers.LinearGradientColorPaintServer.html | 435 ++ ...SVGImage.SVG.PaintServers.PaintServer.html | 401 ++ ...e.SVG.PaintServers.PaintServerManager.html | 493 ++ ...e.SVG.PaintServers.PatternPaintServer.html | 489 ++ ...ervers.RadialGradientColorPaintServer.html | 466 ++ ...VG.PaintServers.SolidColorPaintServer.html | 332 ++ api/SVGImage.SVG.PaintServers.html | 159 + api/SVGImage.SVG.PathShape.html | 345 ++ api/SVGImage.SVG.SVG.html | 880 ++++ api/SVGImage.SVG.SVGImage.eSizeType.html | 168 + api/SVGImage.SVG.SVGImage.html | 3021 ++++++++++++ api/SVGImage.SVG.SVGRender.html | 838 ++++ api/SVGImage.SVG.Shapes.CircleShape.html | 346 ++ api/SVGImage.SVG.Shapes.Clip.html | 296 ++ api/SVGImage.SVG.Shapes.EllipseShape.html | 377 ++ api/SVGImage.SVG.Shapes.Group.html | 400 ++ api/SVGImage.SVG.Shapes.ImageShape.html | 408 ++ api/SVGImage.SVG.Shapes.LineShape.html | 315 ++ api/SVGImage.SVG.Shapes.PolygonShape.html | 312 ++ api/SVGImage.SVG.Shapes.PolylineShape.html | 284 ++ api/SVGImage.SVG.Shapes.RectangleShape.html | 506 ++ api/SVGImage.SVG.Shapes.Shape.html | 980 ++++ api/SVGImage.SVG.Shapes.UseShape.html | 385 ++ api/SVGImage.SVG.Shapes.html | 167 + api/SVGImage.SVG.Stroke.eLineCap.html | 154 + api/SVGImage.SVG.Stroke.eLineJoin.html | 154 + api/SVGImage.SVG.Stroke.html | 483 ++ api/SVGImage.SVG.StyleItem.html | 352 ++ api/SVGImage.SVG.SvgIconBase.html | 575 +++ ...VGImage.SVG.SvgIconConverterExtension.html | 405 ++ api/SVGImage.SVG.SvgIconExtension.html | 343 ++ api/SVGImage.SVG.TextShape.html | 435 ++ api/SVGImage.SVG.TextSpan.eElementType.html | 152 + api/SVGImage.SVG.TextSpan.html | 643 +++ api/SVGImage.SVG.TextStyle.html | 560 +++ api/SVGImage.SVG.Visibility.html | 152 + api/SVGImage.SVG.html | 219 + api/index.html | 127 + api/toc.html | 214 + api/toc.json | 2 + articles/intro.html | 146 + articles/license.html | 131 + articles/toc.html | 25 + articles/toc.json | 2 + favicon.ico | Bin 0 -> 99678 bytes images/dotnetprojects.png | Bin 0 -> 3367 bytes images/sample.png | Bin 0 -> 272373 bytes index.html | 138 + index.json | 312 ++ logo.svg | 25 + manifest.json | 698 +++ public/bootstrap-icons-6QOYJHKE.woff2 | Bin 0 -> 130608 bytes public/bootstrap-icons-JHE3QUSN.woff | Bin 0 -> 176200 bytes public/c4Diagram-7e558229-ESOFQEAK.min.js | 11 + public/c4Diagram-7e558229-ESOFQEAK.min.js.map | 7 + public/chunk-334IV3XH.min.js | 22 + public/chunk-334IV3XH.min.js.map | 7 + public/chunk-7J266ZII.min.js | 111 + public/chunk-7J266ZII.min.js.map | 7 + public/chunk-BQZXUJB5.min.js | 2 + public/chunk-BQZXUJB5.min.js.map | 7 + public/chunk-DJFTDYIK.min.js | 97 + public/chunk-DJFTDYIK.min.js.map | 7 + public/chunk-FFBLGSWC.min.js | 2 + public/chunk-FFBLGSWC.min.js.map | 7 + public/chunk-KFCTMF6X.min.js | 208 + public/chunk-KFCTMF6X.min.js.map | 7 + public/chunk-LLUSN4ZV.min.js | 15 + public/chunk-LLUSN4ZV.min.js.map | 7 + public/chunk-NULBODSD.min.js | 7 + public/chunk-NULBODSD.min.js.map | 7 + public/chunk-P42HNYSU.min.js | 2 + public/chunk-P42HNYSU.min.js.map | 7 + public/chunk-RE5CTVCE.min.js | 161 + public/chunk-RE5CTVCE.min.js.map | 7 + public/chunk-VKCMXAYQ.min.js | 8 + public/chunk-VKCMXAYQ.min.js.map | 7 + public/chunk-YPWPK43L.min.js | 5 + public/chunk-YPWPK43L.min.js.map | 7 + public/classDiagram-bfe30095-CGDYITKI.min.js | 3 + .../classDiagram-bfe30095-CGDYITKI.min.js.map | 7 + .../classDiagram-v2-3a55c922-LPBFVDSW.min.js | 3 + ...assDiagram-v2-3a55c922-LPBFVDSW.min.js.map | 7 + public/docfx.min.css | 16 + public/docfx.min.css.map | 7 + public/docfx.min.js | 99 + public/docfx.min.js.map | 7 + public/erDiagram-5b6cebf0-ET7JKQLO.min.js | 52 + public/erDiagram-5b6cebf0-ET7JKQLO.min.js.map | 7 + public/es-BVOT75G5.min.js | 10 + public/es-BVOT75G5.min.js.map | 7 + public/flowDiagram-90a5ee23-PJVUCMCX.min.js | 5 + .../flowDiagram-90a5ee23-PJVUCMCX.min.js.map | 7 + .../flowDiagram-v2-eab222bb-OKHX3OBW.min.js | 2 + ...lowDiagram-v2-eab222bb-OKHX3OBW.min.js.map | 7 + ...rt-elk-definition-4ac3371a-MJHTACDF.min.js | 140 + ...lk-definition-4ac3371a-MJHTACDF.min.js.map | 7 + public/ganttDiagram-9d6d9e54-2ZUR6K6X.min.js | 267 + .../ganttDiagram-9d6d9e54-2ZUR6K6X.min.js.map | 7 + .../gitGraphDiagram-7b32de06-HSQEFH3J.min.js | 71 + ...tGraphDiagram-7b32de06-HSQEFH3J.min.js.map | 7 + public/infoDiagram-645befec-LJX5B3TX.min.js | 8 + .../infoDiagram-645befec-LJX5B3TX.min.js.map | 7 + .../journeyDiagram-14f1468f-ZPJCRBWY.min.js | 140 + ...ourneyDiagram-14f1468f-ZPJCRBWY.min.js.map | 7 + public/lunr.ar-E7GAKDHK.min.js | 25 + public/lunr.ar-E7GAKDHK.min.js.map | 7 + public/lunr.da-WZCDGCDT.min.js | 22 + public/lunr.da-WZCDGCDT.min.js.map | 7 + public/lunr.de-7XZMXZII.min.js | 22 + public/lunr.de-7XZMXZII.min.js.map | 7 + public/lunr.du-QL47PPFK.min.js | 22 + public/lunr.du-QL47PPFK.min.js.map | 7 + public/lunr.el-6EBCVLMJ.min.js | 22 + public/lunr.el-6EBCVLMJ.min.js.map | 7 + public/lunr.es-4YT3M4ID.min.js | 22 + public/lunr.es-4YT3M4ID.min.js.map | 7 + public/lunr.fi-TLAOR23U.min.js | 22 + public/lunr.fi-TLAOR23U.min.js.map | 7 + public/lunr.fr-G4S422VA.min.js | 22 + public/lunr.fr-G4S422VA.min.js.map | 7 + public/lunr.he-J62KVQ3T.min.js | 25 + public/lunr.he-J62KVQ3T.min.js.map | 7 + public/lunr.hi-VEBDFZQ2.min.js | 22 + public/lunr.hi-VEBDFZQ2.min.js.map | 7 + public/lunr.hu-ZCNH23T6.min.js | 22 + public/lunr.hu-ZCNH23T6.min.js.map | 7 + public/lunr.hy-XFQCAWFO.min.js | 22 + public/lunr.hy-XFQCAWFO.min.js.map | 7 + public/lunr.it-43SEBRLN.min.js | 22 + public/lunr.it-43SEBRLN.min.js.map | 7 + public/lunr.ja-6645DQV5.min.js | 2 + public/lunr.ja-6645DQV5.min.js.map | 7 + public/lunr.jp-2KRE2L63.min.js | 2 + public/lunr.jp-2KRE2L63.min.js.map | 7 + public/lunr.kn-EGFANKI2.min.js | 22 + public/lunr.kn-EGFANKI2.min.js.map | 7 + public/lunr.ko-64QAI4XT.min.js | 22 + public/lunr.ko-64QAI4XT.min.js.map | 7 + public/lunr.nl-JVT7LKKG.min.js | 22 + public/lunr.nl-JVT7LKKG.min.js.map | 7 + public/lunr.no-SUO4TTOY.min.js | 22 + public/lunr.no-SUO4TTOY.min.js.map | 7 + public/lunr.pt-EAA2HV6I.min.js | 22 + public/lunr.pt-EAA2HV6I.min.js.map | 7 + public/lunr.ro-U2ICUNNF.min.js | 22 + public/lunr.ro-U2ICUNNF.min.js.map | 7 + public/lunr.ru-5AQBX5R2.min.js | 22 + public/lunr.ru-5AQBX5R2.min.js.map | 7 + public/lunr.sa-M7TYHLRJ.min.js | 22 + public/lunr.sa-M7TYHLRJ.min.js.map | 7 + public/lunr.sv-K3GSGWC2.min.js | 22 + public/lunr.sv-K3GSGWC2.min.js.map | 7 + public/lunr.ta-AKIPBQLC.min.js | 22 + public/lunr.ta-AKIPBQLC.min.js.map | 7 + public/lunr.te-OBAK5FVS.min.js | 22 + public/lunr.te-OBAK5FVS.min.js.map | 7 + public/lunr.th-LSQ6T65I.min.js | 22 + public/lunr.th-LSQ6T65I.min.js.map | 7 + public/lunr.tr-T3KKXR52.min.js | 22 + public/lunr.tr-T3KKXR52.min.js.map | 7 + public/lunr.vi-S3VOAA5A.min.js | 22 + public/lunr.vi-S3VOAA5A.min.js.map | 7 + public/main.css | 11 + public/main.js | 14 + public/mermaid.core-DXNHHXCT.min.js | 2 + public/mermaid.core-DXNHHXCT.min.js.map | 7 + ...indmap-definition-9a80f489-ZFI7QWPM.min.js | 118 + ...ap-definition-9a80f489-ZFI7QWPM.min.js.map | 7 + public/pieDiagram-47467502-FQNQ6D3F.min.js | 36 + .../pieDiagram-47467502-FQNQ6D3F.min.js.map | 7 + .../quadrantDiagram-3646f1b7-ZGVWP3GK.min.js | 8 + ...adrantDiagram-3646f1b7-ZGVWP3GK.min.js.map | 7 + ...equirementDiagram-cc8b2f2f-LAQPU6OO.min.js | 53 + ...rementDiagram-cc8b2f2f-LAQPU6OO.min.js.map | 7 + public/sankeyDiagram-31fcfff2-K2FETSDB.min.js | 9 + ...sankeyDiagram-31fcfff2-K2FETSDB.min.js.map | 7 + public/search-worker.min.js | 67 + public/search-worker.min.js.map | 7 + .../sequenceDiagram-ccb4d521-4WVPNKGJ.min.js | 123 + ...quenceDiagram-ccb4d521-4WVPNKGJ.min.js.map | 7 + public/stateDiagram-dac17514-SIWOKT2P.min.js | 2 + .../stateDiagram-dac17514-SIWOKT2P.min.js.map | 7 + .../stateDiagram-v2-0255b0b2-QWZSEGAH.min.js | 2 + ...ateDiagram-v2-0255b0b2-QWZSEGAH.min.js.map | 7 + public/tex-svg-full-NDFOGKDH.min.js | 105 + public/tex-svg-full-NDFOGKDH.min.js.map | 7 + ...meline-definition-2815a264-R5TQVDSB.min.js | 62 + ...ne-definition-2815a264-R5TQVDSB.min.js.map | 7 + toc.html | 25 + toc.json | 2 + xrefmap.yml | 4393 +++++++++++++++++ 214 files changed, 32419 insertions(+) create mode 100644 .nojekyll create mode 100644 Readme.html create mode 100644 api/SVGImage.SVG.Animation.Animate.html create mode 100644 api/SVGImage.SVG.Animation.AnimateColor.html create mode 100644 api/SVGImage.SVG.Animation.AnimateMotion.html create mode 100644 api/SVGImage.SVG.Animation.AnimateTransform.html create mode 100644 api/SVGImage.SVG.Animation.AnimateTransformType.html create mode 100644 api/SVGImage.SVG.Animation.AnimationBase.html create mode 100644 api/SVGImage.SVG.Animation.html create mode 100644 api/SVGImage.SVG.ClipArtElement.html create mode 100644 api/SVGImage.SVG.FileLoaders.FileSystemLoader.html create mode 100644 api/SVGImage.SVG.FileLoaders.IExternalFileLoader.html create mode 100644 api/SVGImage.SVG.FileLoaders.html create mode 100644 api/SVGImage.SVG.Fill.eFillRule.html create mode 100644 api/SVGImage.SVG.Fill.html create mode 100644 api/SVGImage.SVG.Filters.Filter.html create mode 100644 api/SVGImage.SVG.Filters.FilterBaseFe.html create mode 100644 api/SVGImage.SVG.Filters.FilterFeGaussianBlur.html create mode 100644 api/SVGImage.SVG.Filters.html create mode 100644 api/SVGImage.SVG.PaintServers.CurrentColorPaintServer.html create mode 100644 api/SVGImage.SVG.PaintServers.GradientColorPaintServer.html create mode 100644 api/SVGImage.SVG.PaintServers.InheritPaintServer.html create mode 100644 api/SVGImage.SVG.PaintServers.LinearGradientColorPaintServer.html create mode 100644 api/SVGImage.SVG.PaintServers.PaintServer.html create mode 100644 api/SVGImage.SVG.PaintServers.PaintServerManager.html create mode 100644 api/SVGImage.SVG.PaintServers.PatternPaintServer.html create mode 100644 api/SVGImage.SVG.PaintServers.RadialGradientColorPaintServer.html create mode 100644 api/SVGImage.SVG.PaintServers.SolidColorPaintServer.html create mode 100644 api/SVGImage.SVG.PaintServers.html create mode 100644 api/SVGImage.SVG.PathShape.html create mode 100644 api/SVGImage.SVG.SVG.html create mode 100644 api/SVGImage.SVG.SVGImage.eSizeType.html create mode 100644 api/SVGImage.SVG.SVGImage.html create mode 100644 api/SVGImage.SVG.SVGRender.html create mode 100644 api/SVGImage.SVG.Shapes.CircleShape.html create mode 100644 api/SVGImage.SVG.Shapes.Clip.html create mode 100644 api/SVGImage.SVG.Shapes.EllipseShape.html create mode 100644 api/SVGImage.SVG.Shapes.Group.html create mode 100644 api/SVGImage.SVG.Shapes.ImageShape.html create mode 100644 api/SVGImage.SVG.Shapes.LineShape.html create mode 100644 api/SVGImage.SVG.Shapes.PolygonShape.html create mode 100644 api/SVGImage.SVG.Shapes.PolylineShape.html create mode 100644 api/SVGImage.SVG.Shapes.RectangleShape.html create mode 100644 api/SVGImage.SVG.Shapes.Shape.html create mode 100644 api/SVGImage.SVG.Shapes.UseShape.html create mode 100644 api/SVGImage.SVG.Shapes.html create mode 100644 api/SVGImage.SVG.Stroke.eLineCap.html create mode 100644 api/SVGImage.SVG.Stroke.eLineJoin.html create mode 100644 api/SVGImage.SVG.Stroke.html create mode 100644 api/SVGImage.SVG.StyleItem.html create mode 100644 api/SVGImage.SVG.SvgIconBase.html create mode 100644 api/SVGImage.SVG.SvgIconConverterExtension.html create mode 100644 api/SVGImage.SVG.SvgIconExtension.html create mode 100644 api/SVGImage.SVG.TextShape.html create mode 100644 api/SVGImage.SVG.TextSpan.eElementType.html create mode 100644 api/SVGImage.SVG.TextSpan.html create mode 100644 api/SVGImage.SVG.TextStyle.html create mode 100644 api/SVGImage.SVG.Visibility.html create mode 100644 api/SVGImage.SVG.html create mode 100644 api/index.html create mode 100644 api/toc.html create mode 100644 api/toc.json create mode 100644 articles/intro.html create mode 100644 articles/license.html create mode 100644 articles/toc.html create mode 100644 articles/toc.json create mode 100644 favicon.ico create mode 100644 images/dotnetprojects.png create mode 100644 images/sample.png create mode 100644 index.html create mode 100644 index.json create mode 100644 logo.svg create mode 100644 manifest.json create mode 100644 public/bootstrap-icons-6QOYJHKE.woff2 create mode 100644 public/bootstrap-icons-JHE3QUSN.woff create mode 100644 public/c4Diagram-7e558229-ESOFQEAK.min.js create mode 100644 public/c4Diagram-7e558229-ESOFQEAK.min.js.map create mode 100644 public/chunk-334IV3XH.min.js create mode 100644 public/chunk-334IV3XH.min.js.map create mode 100644 public/chunk-7J266ZII.min.js create mode 100644 public/chunk-7J266ZII.min.js.map create mode 100644 public/chunk-BQZXUJB5.min.js create mode 100644 public/chunk-BQZXUJB5.min.js.map create mode 100644 public/chunk-DJFTDYIK.min.js create mode 100644 public/chunk-DJFTDYIK.min.js.map create mode 100644 public/chunk-FFBLGSWC.min.js create mode 100644 public/chunk-FFBLGSWC.min.js.map create mode 100644 public/chunk-KFCTMF6X.min.js create mode 100644 public/chunk-KFCTMF6X.min.js.map create mode 100644 public/chunk-LLUSN4ZV.min.js create mode 100644 public/chunk-LLUSN4ZV.min.js.map create mode 100644 public/chunk-NULBODSD.min.js create mode 100644 public/chunk-NULBODSD.min.js.map create mode 100644 public/chunk-P42HNYSU.min.js create mode 100644 public/chunk-P42HNYSU.min.js.map create mode 100644 public/chunk-RE5CTVCE.min.js create mode 100644 public/chunk-RE5CTVCE.min.js.map create mode 100644 public/chunk-VKCMXAYQ.min.js create mode 100644 public/chunk-VKCMXAYQ.min.js.map create mode 100644 public/chunk-YPWPK43L.min.js create mode 100644 public/chunk-YPWPK43L.min.js.map create mode 100644 public/classDiagram-bfe30095-CGDYITKI.min.js create mode 100644 public/classDiagram-bfe30095-CGDYITKI.min.js.map create mode 100644 public/classDiagram-v2-3a55c922-LPBFVDSW.min.js create mode 100644 public/classDiagram-v2-3a55c922-LPBFVDSW.min.js.map create mode 100644 public/docfx.min.css create mode 100644 public/docfx.min.css.map create mode 100644 public/docfx.min.js create mode 100644 public/docfx.min.js.map create mode 100644 public/erDiagram-5b6cebf0-ET7JKQLO.min.js create mode 100644 public/erDiagram-5b6cebf0-ET7JKQLO.min.js.map create mode 100644 public/es-BVOT75G5.min.js create mode 100644 public/es-BVOT75G5.min.js.map create mode 100644 public/flowDiagram-90a5ee23-PJVUCMCX.min.js create mode 100644 public/flowDiagram-90a5ee23-PJVUCMCX.min.js.map create mode 100644 public/flowDiagram-v2-eab222bb-OKHX3OBW.min.js create mode 100644 public/flowDiagram-v2-eab222bb-OKHX3OBW.min.js.map create mode 100644 public/flowchart-elk-definition-4ac3371a-MJHTACDF.min.js create mode 100644 public/flowchart-elk-definition-4ac3371a-MJHTACDF.min.js.map create mode 100644 public/ganttDiagram-9d6d9e54-2ZUR6K6X.min.js create mode 100644 public/ganttDiagram-9d6d9e54-2ZUR6K6X.min.js.map create mode 100644 public/gitGraphDiagram-7b32de06-HSQEFH3J.min.js create mode 100644 public/gitGraphDiagram-7b32de06-HSQEFH3J.min.js.map create mode 100644 public/infoDiagram-645befec-LJX5B3TX.min.js create mode 100644 public/infoDiagram-645befec-LJX5B3TX.min.js.map create mode 100644 public/journeyDiagram-14f1468f-ZPJCRBWY.min.js create mode 100644 public/journeyDiagram-14f1468f-ZPJCRBWY.min.js.map create mode 100644 public/lunr.ar-E7GAKDHK.min.js create mode 100644 public/lunr.ar-E7GAKDHK.min.js.map create mode 100644 public/lunr.da-WZCDGCDT.min.js create mode 100644 public/lunr.da-WZCDGCDT.min.js.map create mode 100644 public/lunr.de-7XZMXZII.min.js create mode 100644 public/lunr.de-7XZMXZII.min.js.map create mode 100644 public/lunr.du-QL47PPFK.min.js create mode 100644 public/lunr.du-QL47PPFK.min.js.map create mode 100644 public/lunr.el-6EBCVLMJ.min.js create mode 100644 public/lunr.el-6EBCVLMJ.min.js.map create mode 100644 public/lunr.es-4YT3M4ID.min.js create mode 100644 public/lunr.es-4YT3M4ID.min.js.map create mode 100644 public/lunr.fi-TLAOR23U.min.js create mode 100644 public/lunr.fi-TLAOR23U.min.js.map create mode 100644 public/lunr.fr-G4S422VA.min.js create mode 100644 public/lunr.fr-G4S422VA.min.js.map create mode 100644 public/lunr.he-J62KVQ3T.min.js create mode 100644 public/lunr.he-J62KVQ3T.min.js.map create mode 100644 public/lunr.hi-VEBDFZQ2.min.js create mode 100644 public/lunr.hi-VEBDFZQ2.min.js.map create mode 100644 public/lunr.hu-ZCNH23T6.min.js create mode 100644 public/lunr.hu-ZCNH23T6.min.js.map create mode 100644 public/lunr.hy-XFQCAWFO.min.js create mode 100644 public/lunr.hy-XFQCAWFO.min.js.map create mode 100644 public/lunr.it-43SEBRLN.min.js create mode 100644 public/lunr.it-43SEBRLN.min.js.map create mode 100644 public/lunr.ja-6645DQV5.min.js create mode 100644 public/lunr.ja-6645DQV5.min.js.map create mode 100644 public/lunr.jp-2KRE2L63.min.js create mode 100644 public/lunr.jp-2KRE2L63.min.js.map create mode 100644 public/lunr.kn-EGFANKI2.min.js create mode 100644 public/lunr.kn-EGFANKI2.min.js.map create mode 100644 public/lunr.ko-64QAI4XT.min.js create mode 100644 public/lunr.ko-64QAI4XT.min.js.map create mode 100644 public/lunr.nl-JVT7LKKG.min.js create mode 100644 public/lunr.nl-JVT7LKKG.min.js.map create mode 100644 public/lunr.no-SUO4TTOY.min.js create mode 100644 public/lunr.no-SUO4TTOY.min.js.map create mode 100644 public/lunr.pt-EAA2HV6I.min.js create mode 100644 public/lunr.pt-EAA2HV6I.min.js.map create mode 100644 public/lunr.ro-U2ICUNNF.min.js create mode 100644 public/lunr.ro-U2ICUNNF.min.js.map create mode 100644 public/lunr.ru-5AQBX5R2.min.js create mode 100644 public/lunr.ru-5AQBX5R2.min.js.map create mode 100644 public/lunr.sa-M7TYHLRJ.min.js create mode 100644 public/lunr.sa-M7TYHLRJ.min.js.map create mode 100644 public/lunr.sv-K3GSGWC2.min.js create mode 100644 public/lunr.sv-K3GSGWC2.min.js.map create mode 100644 public/lunr.ta-AKIPBQLC.min.js create mode 100644 public/lunr.ta-AKIPBQLC.min.js.map create mode 100644 public/lunr.te-OBAK5FVS.min.js create mode 100644 public/lunr.te-OBAK5FVS.min.js.map create mode 100644 public/lunr.th-LSQ6T65I.min.js create mode 100644 public/lunr.th-LSQ6T65I.min.js.map create mode 100644 public/lunr.tr-T3KKXR52.min.js create mode 100644 public/lunr.tr-T3KKXR52.min.js.map create mode 100644 public/lunr.vi-S3VOAA5A.min.js create mode 100644 public/lunr.vi-S3VOAA5A.min.js.map create mode 100644 public/main.css create mode 100644 public/main.js create mode 100644 public/mermaid.core-DXNHHXCT.min.js create mode 100644 public/mermaid.core-DXNHHXCT.min.js.map create mode 100644 public/mindmap-definition-9a80f489-ZFI7QWPM.min.js create mode 100644 public/mindmap-definition-9a80f489-ZFI7QWPM.min.js.map create mode 100644 public/pieDiagram-47467502-FQNQ6D3F.min.js create mode 100644 public/pieDiagram-47467502-FQNQ6D3F.min.js.map create mode 100644 public/quadrantDiagram-3646f1b7-ZGVWP3GK.min.js create mode 100644 public/quadrantDiagram-3646f1b7-ZGVWP3GK.min.js.map create mode 100644 public/requirementDiagram-cc8b2f2f-LAQPU6OO.min.js create mode 100644 public/requirementDiagram-cc8b2f2f-LAQPU6OO.min.js.map create mode 100644 public/sankeyDiagram-31fcfff2-K2FETSDB.min.js create mode 100644 public/sankeyDiagram-31fcfff2-K2FETSDB.min.js.map create mode 100644 public/search-worker.min.js create mode 100644 public/search-worker.min.js.map create mode 100644 public/sequenceDiagram-ccb4d521-4WVPNKGJ.min.js create mode 100644 public/sequenceDiagram-ccb4d521-4WVPNKGJ.min.js.map create mode 100644 public/stateDiagram-dac17514-SIWOKT2P.min.js create mode 100644 public/stateDiagram-dac17514-SIWOKT2P.min.js.map create mode 100644 public/stateDiagram-v2-0255b0b2-QWZSEGAH.min.js create mode 100644 public/stateDiagram-v2-0255b0b2-QWZSEGAH.min.js.map create mode 100644 public/tex-svg-full-NDFOGKDH.min.js create mode 100644 public/tex-svg-full-NDFOGKDH.min.js.map create mode 100644 public/timeline-definition-2815a264-R5TQVDSB.min.js create mode 100644 public/timeline-definition-2815a264-R5TQVDSB.min.js.map create mode 100644 toc.html create mode 100644 toc.json create mode 100644 xrefmap.yml diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/Readme.html b/Readme.html new file mode 100644 index 0000000..7538964 --- /dev/null +++ b/Readme.html @@ -0,0 +1,138 @@ + + + + + SVGImage | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+

SVGImage

+ +

This is an SVG Image View Control for WPF applications.

+

Initially forked from: SVGImage Control - CodeProject Article

+

Besides the bug fixes, new features are added including the following:

+
    +
  • Mask/Clip support
  • +
  • Support of styles.
  • +
  • Simple Animation support.
  • +
+

Documentations

+

For the User Manual and API References see Documentation.

+

Framework support

+

The SVGImage control library targets the following frameworks

+
    +
  • .NET Framework, Version 4.0
  • +
  • .NET Framework, Version 4.5
  • +
  • .NET Framework, Version 4.6
  • +
  • .NET Framework, Version 4.7
  • +
  • .NET Framework, Version 4.8
  • +
  • .NET Core, Version 3.1
  • +
  • .NET 6 ~ 7
  • +
+

License

+

The SVGImage control library is relicensed under MIT License, +with permission from the original author.

+ +
+ + + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Animation.Animate.html b/api/SVGImage.SVG.Animation.Animate.html new file mode 100644 index 0000000..3c6dff1 --- /dev/null +++ b/api/SVGImage.SVG.Animation.Animate.html @@ -0,0 +1,445 @@ + + + + + Class Animate + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class Animate + +

+ +
+
Namespace
SVGImage.SVG.Animation
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class Animate : AnimationBase
+
+ + + + +
+
Inheritance
+
+ + + + +
Animate
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ Animate(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
public Animate(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ AttributeName + +

+ +
+
+ +
+
public string AttributeName { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ From + +

+ +
+
+ +
+
public string From { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ RepeatType + +

+ +
+
+ +
+
public string RepeatType { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ To + +

+ +
+
+ +
+
public string To { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Values + +

+ +
+
+ +
+
public string Values { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ hRef + +

+ +
+
+ +
+
public string hRef { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Animation.AnimateColor.html b/api/SVGImage.SVG.Animation.AnimateColor.html new file mode 100644 index 0000000..4fe4ce9 --- /dev/null +++ b/api/SVGImage.SVG.Animation.AnimateColor.html @@ -0,0 +1,255 @@ + + + + + Class AnimateColor + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class AnimateColor + +

+ +
+
Namespace
SVGImage.SVG.Animation
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class AnimateColor : AnimationBase
+
+ + + + +
+
Inheritance
+
+ + + + +
AnimateColor
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ AnimateColor(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
public AnimateColor(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Animation.AnimateMotion.html b/api/SVGImage.SVG.Animation.AnimateMotion.html new file mode 100644 index 0000000..8dfaf50 --- /dev/null +++ b/api/SVGImage.SVG.Animation.AnimateMotion.html @@ -0,0 +1,255 @@ + + + + + Class AnimateMotion + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class AnimateMotion + +

+ +
+
Namespace
SVGImage.SVG.Animation
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class AnimateMotion : AnimationBase
+
+ + + + +
+
Inheritance
+
+ + + + +
AnimateMotion
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ AnimateMotion(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
public AnimateMotion(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Animation.AnimateTransform.html b/api/SVGImage.SVG.Animation.AnimateTransform.html new file mode 100644 index 0000000..72814f5 --- /dev/null +++ b/api/SVGImage.SVG.Animation.AnimateTransform.html @@ -0,0 +1,445 @@ + + + + + Class AnimateTransform + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class AnimateTransform + +

+ +
+
Namespace
SVGImage.SVG.Animation
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class AnimateTransform : AnimationBase
+
+ + + + +
+
Inheritance
+
+ + + + +
AnimateTransform
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ AnimateTransform(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
public AnimateTransform(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ AttributeName + +

+ +
+
+ +
+
public string AttributeName { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ From + +

+ +
+
+ +
+
public string From { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ RepeatType + +

+ +
+
+ +
+
public string RepeatType { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ To + +

+ +
+
+ +
+
public string To { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Type + +

+ +
+
+ +
+
public AnimateTransformType Type { get; set; }
+
+ + + + + +

Property Value

+
+
AnimateTransformType
+
+
+ + + + + + + + + + +

+ Values + +

+ +
+
+ +
+
public string Values { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Animation.AnimateTransformType.html b/api/SVGImage.SVG.Animation.AnimateTransformType.html new file mode 100644 index 0000000..85bc663 --- /dev/null +++ b/api/SVGImage.SVG.Animation.AnimateTransformType.html @@ -0,0 +1,158 @@ + + + + + Enum AnimateTransformType + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+ Enum AnimateTransformType + +

+ +
+
Namespace
SVGImage.SVG.Animation
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public enum AnimateTransformType
+
+ + + + + + + + + +

Fields +

+
+
Rotate = 2
+
+
Scale = 1
+
+
SkewX = 3
+
+
SkewY = 4
+
+
Translate = 0
+
+
+ + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Animation.AnimationBase.html b/api/SVGImage.SVG.Animation.AnimationBase.html new file mode 100644 index 0000000..94d828c --- /dev/null +++ b/api/SVGImage.SVG.Animation.AnimationBase.html @@ -0,0 +1,325 @@ + + + + + Class AnimationBase + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class AnimationBase + +

+ +
+
Namespace
SVGImage.SVG.Animation
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public abstract class AnimationBase : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
AnimationBase
+
+
+ + +
+
Derived
+
+ + + + +
+
+ +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ AnimationBase(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
protected AnimationBase(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Duration + +

+ +
+
+ +
+
public TimeSpan Duration { get; set; }
+
+ + + + + +

Property Value

+
+
TimeSpan
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Animation.html b/api/SVGImage.SVG.Animation.html new file mode 100644 index 0000000..259b93d --- /dev/null +++ b/api/SVGImage.SVG.Animation.html @@ -0,0 +1,150 @@ + + + + + Namespace SVGImage.SVG.Animation + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.ClipArtElement.html b/api/SVGImage.SVG.ClipArtElement.html new file mode 100644 index 0000000..882e9b1 --- /dev/null +++ b/api/SVGImage.SVG.ClipArtElement.html @@ -0,0 +1,253 @@ + + + + + Class ClipArtElement + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class ClipArtElement + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public abstract class ClipArtElement
+
+ + + + +
+
Inheritance
+
+ +
ClipArtElement
+
+
+ + +
+
Derived
+
+ +
+
+ +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ ClipArtElement(XmlNode) + +

+ +
+
+ +
+
protected ClipArtElement(XmlNode node)
+
+ +

Parameters

+
+
node XmlNode
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Id + +

+ +
+
+ +
+
public string Id { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.FileLoaders.FileSystemLoader.html b/api/SVGImage.SVG.FileLoaders.FileSystemLoader.html new file mode 100644 index 0000000..aff3c79 --- /dev/null +++ b/api/SVGImage.SVG.FileLoaders.FileSystemLoader.html @@ -0,0 +1,257 @@ + + + + + Class FileSystemLoader + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class FileSystemLoader + +

+ +
+
Namespace
SVGImage.SVG.FileLoaders
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class FileSystemLoader : IExternalFileLoader
+
+ + + + +
+
Inheritance
+
+ +
FileSystemLoader
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ + + + + + +

Properties +

+ + + + +

+ Instance + +

+ +
+
+ +
+
public static FileSystemLoader Instance { get; }
+
+ + + + + +

Property Value

+
+
FileSystemLoader
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ LoadFile(string, string) + +

+ +
+
+ +
+
public Stream LoadFile(string hRef, string svgFilename)
+
+ +

Parameters

+
+
hRef string
+
+
svgFilename string
+
+
+ +

Returns

+
+
Stream
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.FileLoaders.IExternalFileLoader.html b/api/SVGImage.SVG.FileLoaders.IExternalFileLoader.html new file mode 100644 index 0000000..22766b6 --- /dev/null +++ b/api/SVGImage.SVG.FileLoaders.IExternalFileLoader.html @@ -0,0 +1,187 @@ + + + + + Interface IExternalFileLoader + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Interface IExternalFileLoader + +

+ +
+
Namespace
SVGImage.SVG.FileLoaders
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public interface IExternalFileLoader
+
+ + + + + + + + + + + + + +

Methods +

+ + + + +

+ LoadFile(string, string) + +

+ +
+
+ +
+
Stream LoadFile(string hRef, string svgFilename)
+
+ +

Parameters

+
+
hRef string
+
+
svgFilename string
+
+
+ +

Returns

+
+
Stream
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.FileLoaders.html b/api/SVGImage.SVG.FileLoaders.html new file mode 100644 index 0000000..2a6223a --- /dev/null +++ b/api/SVGImage.SVG.FileLoaders.html @@ -0,0 +1,134 @@ + + + + + Namespace SVGImage.SVG.FileLoaders + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Fill.eFillRule.html b/api/SVGImage.SVG.Fill.eFillRule.html new file mode 100644 index 0000000..ed5921f --- /dev/null +++ b/api/SVGImage.SVG.Fill.eFillRule.html @@ -0,0 +1,152 @@ + + + + + Enum Fill.eFillRule + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+ Enum Fill.eFillRule + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public enum Fill.eFillRule
+
+ + + + + + + + + +

Fields +

+
+
evenodd = 1
+
+
nonzero = 0
+
+
+ + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Fill.html b/api/SVGImage.SVG.Fill.html new file mode 100644 index 0000000..e575d44 --- /dev/null +++ b/api/SVGImage.SVG.Fill.html @@ -0,0 +1,390 @@ + + + + + Class Fill + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class Fill + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class Fill
+
+ + + + +
+
Inheritance
+
+ +
Fill
+
+
+ + + +
+
Inherited Members
+
+ + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ Fill(SVG) + +

+ +
+
+ +
+
public Fill(SVG svg)
+
+ +

Parameters

+
+
svg SVG
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ FillRule + +

+ +
+
+ +
+
public Fill.eFillRule FillRule { get; set; }
+
+ + + + + +

Property Value

+
+
Fill.eFillRule
+
+
+ + + + + + + + + + +

+ Opacity + +

+ +
+
+ +
+
public double Opacity { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ PaintServerKey + +

+ +
+
+ +
+
public string PaintServerKey { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ FillBrush(SVG, SVGRender, Shape, double, Rect) + +

+ +
+
+ +
+
public Brush FillBrush(SVG svg, SVGRender svgRender, Shape shape, double elementOpacity, Rect bounds)
+
+ +

Parameters

+
+
svg SVG
+
+
svgRender SVGRender
+
+
shape Shape
+
+
elementOpacity double
+
+
bounds Rect
+
+
+ +

Returns

+
+
Brush
+
+
+ + + + + + + + + + + + + +

+ IsEmpty(SVG) + +

+ +
+
+ +
+
public bool IsEmpty(SVG svg)
+
+ +

Parameters

+
+
svg SVG
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Filters.Filter.html b/api/SVGImage.SVG.Filters.Filter.html new file mode 100644 index 0000000..8b832c1 --- /dev/null +++ b/api/SVGImage.SVG.Filters.Filter.html @@ -0,0 +1,296 @@ + + + + + Class Filter + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class Filter + +

+ +
+
Namespace
SVGImage.SVG.Filters
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class Filter : Group
+
+ + + + +
+
Inheritance
+
+ + + + +
Filter
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ Filter(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
public Filter(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + +

Methods +

+ + + + +

+ GetBitmapEffect() + +

+ +
+
+ +
+
public BitmapEffect GetBitmapEffect()
+
+ + +

Returns

+
+
BitmapEffect
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Filters.FilterBaseFe.html b/api/SVGImage.SVG.Filters.FilterBaseFe.html new file mode 100644 index 0000000..bdf76d3 --- /dev/null +++ b/api/SVGImage.SVG.Filters.FilterBaseFe.html @@ -0,0 +1,322 @@ + + + + + Class FilterBaseFe + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class FilterBaseFe + +

+ +
+
Namespace
SVGImage.SVG.Filters
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public abstract class FilterBaseFe : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
FilterBaseFe
+
+
+ + +
+
Derived
+
+ +
+
+ +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ FilterBaseFe(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
public FilterBaseFe(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + +

Methods +

+ + + + +

+ GetBitmapEffect() + +

+ +
+
+ +
+
public abstract BitmapEffect GetBitmapEffect()
+
+ + +

Returns

+
+
BitmapEffect
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Filters.FilterFeGaussianBlur.html b/api/SVGImage.SVG.Filters.FilterFeGaussianBlur.html new file mode 100644 index 0000000..3327ef0 --- /dev/null +++ b/api/SVGImage.SVG.Filters.FilterFeGaussianBlur.html @@ -0,0 +1,414 @@ + + + + + Class FilterFeGaussianBlur + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class FilterFeGaussianBlur + +

+ +
+
Namespace
SVGImage.SVG.Filters
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public class FilterFeGaussianBlur : FilterBaseFe
+
+ + + + +
+
Inheritance
+
+ + + + +
FilterFeGaussianBlur
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ FilterFeGaussianBlur(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
public FilterFeGaussianBlur(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ In + +

+ +
+
+ +
+
public string In { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ StdDeviationX + +

+ +
+
+ +
+
public double StdDeviationX { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ StdDeviationY + +

+ +
+
+ +
+
public double StdDeviationY { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ GetBitmapEffect() + +

+ +
+
+ +
+
public override BitmapEffect GetBitmapEffect()
+
+ + +

Returns

+
+
BitmapEffect
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Filters.html b/api/SVGImage.SVG.Filters.html new file mode 100644 index 0000000..17b8bab --- /dev/null +++ b/api/SVGImage.SVG.Filters.html @@ -0,0 +1,135 @@ + + + + + Namespace SVGImage.SVG.Filters + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.PaintServers.CurrentColorPaintServer.html b/api/SVGImage.SVG.PaintServers.CurrentColorPaintServer.html new file mode 100644 index 0000000..2665f0a --- /dev/null +++ b/api/SVGImage.SVG.PaintServers.CurrentColorPaintServer.html @@ -0,0 +1,262 @@ + + + + + Class CurrentColorPaintServer + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class CurrentColorPaintServer + +

+ +
+
Namespace
SVGImage.SVG.PaintServers
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class CurrentColorPaintServer : PaintServer
+
+ + + + +
+
Inheritance
+
+ + +
CurrentColorPaintServer
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ CurrentColorPaintServer(PaintServerManager) + +

+ +
+
+ +
+
public CurrentColorPaintServer(PaintServerManager owner)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
+ + + + + + + + + + + + +

Methods +

+ + + + +

+ GetBrush(double, SVG, SVGRender, Rect) + +

+ +
+
+ +
+
public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
+
+ +

Parameters

+
+
opacity double
+
+
svg SVG
+
+
svgRender SVGRender
+
+
bounds Rect
+
+
+ +

Returns

+
+
Brush
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.PaintServers.GradientColorPaintServer.html b/api/SVGImage.SVG.PaintServers.GradientColorPaintServer.html new file mode 100644 index 0000000..0c91f64 --- /dev/null +++ b/api/SVGImage.SVG.PaintServers.GradientColorPaintServer.html @@ -0,0 +1,362 @@ + + + + + Class GradientColorPaintServer + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class GradientColorPaintServer + +

+ +
+
Namespace
SVGImage.SVG.PaintServers
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public abstract class GradientColorPaintServer : PaintServer
+
+ + + + +
+
Inheritance
+
+ + +
GradientColorPaintServer
+
+
+ + +
+
Derived
+
+ + +
+
+ +
+
Inherited Members
+
+ + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ GradientColorPaintServer(PaintServerManager) + +

+ +
+
+ +
+
protected GradientColorPaintServer(PaintServerManager owner)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
+ + + + + + + + + + + + + + +

+ GradientColorPaintServer(PaintServerManager, XmlNode) + +

+ +
+
+ +
+
protected GradientColorPaintServer(PaintServerManager owner, XmlNode node)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
node XmlNode
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ GradientUnits + +

+ +
+
+ +
+
public string GradientUnits { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Stops + +

+ +
+
+ +
+
public IList<GradientStop> Stops { get; }
+
+ + + + + +

Property Value

+
+
IList<GradientStop>
+
+
+ + + + + + + + + + +

+ Transform + +

+ +
+
+ +
+
public Transform Transform { get; protected set; }
+
+ + + + + +

Property Value

+
+
Transform
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.PaintServers.InheritPaintServer.html b/api/SVGImage.SVG.PaintServers.InheritPaintServer.html new file mode 100644 index 0000000..d6c68a1 --- /dev/null +++ b/api/SVGImage.SVG.PaintServers.InheritPaintServer.html @@ -0,0 +1,262 @@ + + + + + Class InheritPaintServer + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class InheritPaintServer + +

+ +
+
Namespace
SVGImage.SVG.PaintServers
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class InheritPaintServer : PaintServer
+
+ + + + +
+
Inheritance
+
+ + +
InheritPaintServer
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ InheritPaintServer(PaintServerManager) + +

+ +
+
+ +
+
public InheritPaintServer(PaintServerManager owner)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
+ + + + + + + + + + + + +

Methods +

+ + + + +

+ GetBrush(double, SVG, SVGRender, Rect) + +

+ +
+
+ +
+
public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
+
+ +

Parameters

+
+
opacity double
+
+
svg SVG
+
+
svgRender SVGRender
+
+
bounds Rect
+
+
+ +

Returns

+
+
Brush
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.PaintServers.LinearGradientColorPaintServer.html b/api/SVGImage.SVG.PaintServers.LinearGradientColorPaintServer.html new file mode 100644 index 0000000..ae45793 --- /dev/null +++ b/api/SVGImage.SVG.PaintServers.LinearGradientColorPaintServer.html @@ -0,0 +1,435 @@ + + + + + Class LinearGradientColorPaintServer + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class LinearGradientColorPaintServer + +

+ +
+
Namespace
SVGImage.SVG.PaintServers
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class LinearGradientColorPaintServer : GradientColorPaintServer
+
+ + + + +
+
Inheritance
+
+ + + +
LinearGradientColorPaintServer
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ LinearGradientColorPaintServer(PaintServerManager, Brush) + +

+ +
+
+ +
+
public LinearGradientColorPaintServer(PaintServerManager owner, Brush newBrush)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
newBrush Brush
+
+
+ + + + + + + + + + + + + + +

+ LinearGradientColorPaintServer(PaintServerManager, XmlNode) + +

+ +
+
+ +
+
public LinearGradientColorPaintServer(PaintServerManager owner, XmlNode node)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
node XmlNode
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ X1 + +

+ +
+
+ +
+
public double X1 { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ X2 + +

+ +
+
+ +
+
public double X2 { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Y1 + +

+ +
+
+ +
+
public double Y1 { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Y2 + +

+ +
+
+ +
+
public double Y2 { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ GetBrush(double, SVG, SVGRender, Rect) + +

+ +
+
+ +
+
public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
+
+ +

Parameters

+
+
opacity double
+
+
svg SVG
+
+
svgRender SVGRender
+
+
bounds Rect
+
+
+ +

Returns

+
+
Brush
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.PaintServers.PaintServer.html b/api/SVGImage.SVG.PaintServers.PaintServer.html new file mode 100644 index 0000000..c8745ef --- /dev/null +++ b/api/SVGImage.SVG.PaintServers.PaintServer.html @@ -0,0 +1,401 @@ + + + + + Class PaintServer + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class PaintServer + +

+ +
+
Namespace
SVGImage.SVG.PaintServers
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public class PaintServer
+
+ + + + +
+
Inheritance
+
+ +
PaintServer
+
+
+ + +
+
Derived
+
+ + + + + +
+
+ +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ PaintServer(PaintServerManager) + +

+ +
+
+ +
+
public PaintServer(PaintServerManager owner)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
+ + + + + + + + + + + + + + +

+ PaintServer(PaintServerManager, Brush) + +

+ +
+
+ +
+
public PaintServer(PaintServerManager owner, Brush newBrush)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
newBrush Brush
+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ Brush + +

+ +
+
+ +
+
protected Brush Brush
+
+ + + + +

Field Value

+
+
Brush
+
+
+ + + + + + + + + +

Properties +

+ + + + +

+ Owner + +

+ +
+
+ +
+
public PaintServerManager Owner { get; }
+
+ + + + + +

Property Value

+
+
PaintServerManager
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ GetBrush() + +

+ +
+
+ +
+
public Brush GetBrush()
+
+ + +

Returns

+
+
Brush
+
+
+ + + + + + + + + + + + + +

+ GetBrush(double, SVG, SVGRender, Rect) + +

+ +
+
+ +
+
public virtual Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
+
+ +

Parameters

+
+
opacity double
+
+
svg SVG
+
+
svgRender SVGRender
+
+
bounds Rect
+
+
+ +

Returns

+
+
Brush
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.PaintServers.PaintServerManager.html b/api/SVGImage.SVG.PaintServers.PaintServerManager.html new file mode 100644 index 0000000..c4f718b --- /dev/null +++ b/api/SVGImage.SVG.PaintServers.PaintServerManager.html @@ -0,0 +1,493 @@ + + + + + Class PaintServerManager + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class PaintServerManager + +

+ +
+
Namespace
SVGImage.SVG.PaintServers
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class PaintServerManager
+
+ + + + +
+
Inheritance
+
+ +
PaintServerManager
+
+
+ + + +
+
Inherited Members
+
+ + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ AddServer(string, PaintServer) + +

+ +
+
+ +
+
public void AddServer(string key, PaintServer server)
+
+ +

Parameters

+
+
key string
+
+
server PaintServer
+
+
+ + + + + + + + + + + + + + +

+ ContainsServer(string) + +

+ +
+
+ +
+
public bool ContainsServer(string serverKey)
+
+ +

Parameters

+
+
serverKey string
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + + +

+ Create(SVG, XmlNode) + +

+ +
+
+ +
+
public string Create(SVG svg, XmlNode node)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
+ +

Returns

+
+
string
+
+
+ + + + + + + + + + + + + +

+ CreateServerFromBrush(string, Brush) + +

+ +
+
+ +
+
public void CreateServerFromBrush(string key, Brush customBrush)
+
+ +

Parameters

+
+
key string
+
+
customBrush Brush
+
+
+ + + + + + + + + + + + + + +

+ GetServer(string) + +

+ +
+
+ +
+
public PaintServer GetServer(string serverKey)
+
+ +

Parameters

+
+
serverKey string
+
+
+ +

Returns

+
+
PaintServer
+
+
+ + + + + + + + + + + + + +

+ GetServers() + +

+ +
+
+ +
+
public Dictionary<string, PaintServer> GetServers()
+
+ + +

Returns

+
+
Dictionary<string, PaintServer>
+
+
+ + + + + + + + + + + + + +

+ KnownColor(string) + +

+ +
+
+ +
+
public static Color KnownColor(string value)
+
+ +

Parameters

+
+
value string
+
+
+ +

Returns

+
+
Color
+
+
+ + + + + + + + + + + + + +

+ Parse(string) + +

+ +
+
+ +
+
public string Parse(string value)
+
+ +

Parameters

+
+
value string
+
+
+ +

Returns

+
+
string
+
+
+ + + + + + + + + + + + + +

+ ParseHexColor(string) + +

+ +
+
+ +
+
public static Color ParseHexColor(string value)
+
+ +

Parameters

+
+
value string
+
+
+ +

Returns

+
+
Color
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.PaintServers.PatternPaintServer.html b/api/SVGImage.SVG.PaintServers.PatternPaintServer.html new file mode 100644 index 0000000..6f8e3fa --- /dev/null +++ b/api/SVGImage.SVG.PaintServers.PatternPaintServer.html @@ -0,0 +1,489 @@ + + + + + Class PatternPaintServer + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class PatternPaintServer + +

+ +
+
Namespace
SVGImage.SVG.PaintServers
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class PatternPaintServer : PaintServer
+
+ + + + +
+
Inheritance
+
+ + +
PatternPaintServer
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ PatternPaintServer(PaintServerManager, SVG, XmlNode) + +

+ +
+
+ +
+
public PatternPaintServer(PaintServerManager owner, SVG svg, XmlNode node)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
svg SVG
+
+
node XmlNode
+
+
+ + + + + + + + + + + + + + +

+ PatternPaintServer(PaintServerManager, Brush) + +

+ +
+
+ +
+
public PatternPaintServer(PaintServerManager owner, Brush newBrush)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
newBrush Brush
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Height + +

+ +
+
+ +
+
public double Height { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ PatternTransform + +

+ +
+
+ +
+
public Transform PatternTransform { get; }
+
+ + + + + +

Property Value

+
+
Transform
+
+
+ + + + + + + + + + +

+ PatternUnits + +

+ +
+
+ +
+
public string PatternUnits { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Width + +

+ +
+
+ +
+
public double Width { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ X + +

+ +
+
+ +
+
public double X { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Y + +

+ +
+
+ +
+
public double Y { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ GetBrush(double, SVG, SVGRender, Rect) + +

+ +
+
+ +
+
public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
+
+ +

Parameters

+
+
opacity double
+
+
svg SVG
+
+
svgRender SVGRender
+
+
bounds Rect
+
+
+ +

Returns

+
+
Brush
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.PaintServers.RadialGradientColorPaintServer.html b/api/SVGImage.SVG.PaintServers.RadialGradientColorPaintServer.html new file mode 100644 index 0000000..c95c412 --- /dev/null +++ b/api/SVGImage.SVG.PaintServers.RadialGradientColorPaintServer.html @@ -0,0 +1,466 @@ + + + + + Class RadialGradientColorPaintServer + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class RadialGradientColorPaintServer + +

+ +
+
Namespace
SVGImage.SVG.PaintServers
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class RadialGradientColorPaintServer : GradientColorPaintServer
+
+ + + + +
+
Inheritance
+
+ + + +
RadialGradientColorPaintServer
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ RadialGradientColorPaintServer(PaintServerManager, Brush) + +

+ +
+
+ +
+
public RadialGradientColorPaintServer(PaintServerManager owner, Brush newBrush)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
newBrush Brush
+
+
+ + + + + + + + + + + + + + +

+ RadialGradientColorPaintServer(PaintServerManager, XmlNode) + +

+ +
+
+ +
+
public RadialGradientColorPaintServer(PaintServerManager owner, XmlNode node)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
node XmlNode
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ CX + +

+ +
+
+ +
+
public double CX { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ CY + +

+ +
+
+ +
+
public double CY { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ FX + +

+ +
+
+ +
+
public double FX { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ FY + +

+ +
+
+ +
+
public double FY { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ R + +

+ +
+
+ +
+
public double R { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ GetBrush(double, SVG, SVGRender, Rect) + +

+ +
+
+ +
+
public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
+
+ +

Parameters

+
+
opacity double
+
+
svg SVG
+
+
svgRender SVGRender
+
+
bounds Rect
+
+
+ +

Returns

+
+
Brush
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.PaintServers.SolidColorPaintServer.html b/api/SVGImage.SVG.PaintServers.SolidColorPaintServer.html new file mode 100644 index 0000000..8af252a --- /dev/null +++ b/api/SVGImage.SVG.PaintServers.SolidColorPaintServer.html @@ -0,0 +1,332 @@ + + + + + Class SolidColorPaintServer + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SolidColorPaintServer + +

+ +
+
Namespace
SVGImage.SVG.PaintServers
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class SolidColorPaintServer : PaintServer
+
+ + + + +
+
Inheritance
+
+ + +
SolidColorPaintServer
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ SolidColorPaintServer(PaintServerManager, Brush) + +

+ +
+
+ +
+
public SolidColorPaintServer(PaintServerManager owner, Brush newBrush)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
newBrush Brush
+
+
+ + + + + + + + + + + + + + +

+ SolidColorPaintServer(PaintServerManager, Color) + +

+ +
+
+ +
+
public SolidColorPaintServer(PaintServerManager owner, Color c)
+
+ +

Parameters

+
+
owner PaintServerManager
+
+
c Color
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Color + +

+ +
+
+ +
+
public Color Color { get; set; }
+
+ + + + + +

Property Value

+
+
Color
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ GetBrush(double, SVG, SVGRender, Rect) + +

+ +
+
+ +
+
public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
+
+ +

Parameters

+
+
opacity double
+
+
svg SVG
+
+
svgRender SVGRender
+
+
bounds Rect
+
+
+ +

Returns

+
+
Brush
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.PaintServers.html b/api/SVGImage.SVG.PaintServers.html new file mode 100644 index 0000000..4cc4324 --- /dev/null +++ b/api/SVGImage.SVG.PaintServers.html @@ -0,0 +1,159 @@ + + + + + Namespace SVGImage.SVG.PaintServers + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.PathShape.html b/api/SVGImage.SVG.PathShape.html new file mode 100644 index 0000000..21d92fa --- /dev/null +++ b/api/SVGImage.SVG.PathShape.html @@ -0,0 +1,345 @@ + + + + + Class PathShape + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class PathShape + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class PathShape : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
PathShape
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ PathShape(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
public PathShape(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ ClosePath + +

+ +
+
+ +
+
public bool ClosePath { get; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + + + +

+ Data + +

+ +
+
+ +
+
public string Data { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Fill + +

+ +
+
+ +
+
public override Fill Fill { get; }
+
+ + + + + +

Property Value

+
+
Fill
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.SVG.html b/api/SVGImage.SVG.SVG.html new file mode 100644 index 0000000..f340de4 --- /dev/null +++ b/api/SVGImage.SVG.SVG.html @@ -0,0 +1,880 @@ + + + + + Class SVG + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SVG + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +

This is the class that reads and parses the XML file.

+
+
+ +
+
public class SVG
+
+ + + + +
+
Inheritance
+
+ +
SVG
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ SVG() + +

+ +
+
+ +
+
public SVG()
+
+ + + + + + + + + + + + + + + +

+ SVG(IExternalFileLoader) + +

+ +
+
+ +
+
public SVG(IExternalFileLoader externalFileLoader)
+
+ +

Parameters

+
+
externalFileLoader IExternalFileLoader
+
+
+ + + + + + + + + + + + + + +

+ SVG(Stream) + +

+ +
+
+ +
+
public SVG(Stream stream)
+
+ +

Parameters

+
+
stream Stream
+
+
+ + + + + + + + + + + + + + +

+ SVG(Stream, IExternalFileLoader) + +

+ +
+
+ +
+
public SVG(Stream stream, IExternalFileLoader externalFileLoader)
+
+ +

Parameters

+
+
stream Stream
+
+
externalFileLoader IExternalFileLoader
+
+
+ + + + + + + + + + + + + + +

+ SVG(string) + +

+ +
+
+ +
+
public SVG(string filename)
+
+ +

Parameters

+
+
filename string
+
+
+ + + + + + + + + + + + + + +

+ SVG(string, IExternalFileLoader) + +

+ +
+
+ +
+
public SVG(string filename, IExternalFileLoader externalFileLoader)
+
+ +

Parameters

+
+
filename string
+
+
externalFileLoader IExternalFileLoader
+
+
+ + + + + + + + + + + + + + +

+ SVG(XmlNode, IExternalFileLoader) + +

+ +
+
+ +
+
public SVG(XmlNode svgTag, IExternalFileLoader externalFileLoader)
+
+ +

Parameters

+
+
svgTag XmlNode
+
+
externalFileLoader IExternalFileLoader
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ CustomBrushes + +

+ +
+
+ +
+
public Dictionary<string, Brush> CustomBrushes { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<string, Brush>
+
+
+ + + + + + + + + + +

+ Elements + +

+ +
+
+ +
+
public IList<Shape> Elements { get; }
+
+ + + + + +

Property Value

+
+
IList<Shape>
+
+
+ + + + + + + + + + +

+ ExternalFileLoader + +

+ +
+
+ +
+
public IExternalFileLoader ExternalFileLoader { get; set; }
+
+ + + + + +

Property Value

+
+
IExternalFileLoader
+
+
+ + + + + + + + + + +

+ Filename + +

+ +
+
+ +
+
public string Filename { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ PaintServers + +

+ +
+
+ +
+
public PaintServerManager PaintServers { get; }
+
+ + + + + +

Property Value

+
+
PaintServerManager
+
+
+ + + + + + + + + + +

+ Size + +

+ +
+
+ +
+
public Size Size { get; set; }
+
+ + + + + +

Property Value

+
+
Size
+
+
+ + + + + + + + + + +

+ ViewBox + +

+ +
+
+ +
+
public Rect? ViewBox { get; set; }
+
+ + + + + +

Property Value

+
+
Rect?
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ AddShape(string, Shape) + +

+ +
+
+ +
+
public void AddShape(string id, Shape shape)
+
+ +

Parameters

+
+
id string
+
+
shape Shape
+
+
+ + + + + + + + + + + + + + +

+ GetShape(string) + +

+ +
+
+ +
+
public Shape GetShape(string id)
+
+ +

Parameters

+
+
id string
+
+
+ +

Returns

+
+
Shape
+
+
+ + + + + + + + + + + + + +

+ Load(Stream) + +

+ +
+
+ +
+
public void Load(Stream stream)
+
+ +

Parameters

+
+
stream Stream
+
+
+ + + + + + + + + + + + + + +

+ Load(TextReader) + +

+ +
+
+ +
+
public void Load(TextReader txtReader)
+
+ +

Parameters

+
+
txtReader TextReader
+
+
+ + + + + + + + + + + + + + +

+ Load(string) + +

+ +
+
+ +
+
public void Load(string filePath)
+
+ +

Parameters

+
+
filePath string
+
+
+ + + + + + + + + + + + + + +

+ Load(Uri) + +

+ +
+
+ +
+
public void Load(Uri fileUri)
+
+ +

Parameters

+
+
fileUri Uri
+
+
+ + + + + + + + + + + + + + +

+ Load(XmlReader) + +

+ +
+
+ +
+
public void Load(XmlReader xmlReader)
+
+ +

Parameters

+
+
xmlReader XmlReader
+
+
+ + + + + + + + + + + + + + +

+ LoadXml(string) + +

+ +
+
+ +
+
public void LoadXml(string fileXml)
+
+ +

Parameters

+
+
fileXml string
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.SVGImage.eSizeType.html b/api/SVGImage.SVG.SVGImage.eSizeType.html new file mode 100644 index 0000000..a8a404c --- /dev/null +++ b/api/SVGImage.SVG.SVGImage.eSizeType.html @@ -0,0 +1,168 @@ + + + + + Enum SVGImage.eSizeType + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+ Enum SVGImage.eSizeType + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +

This controls how the image is stretched to fill the control,

+
+
+ +
+
public enum SVGImage.eSizeType
+
+ + + + + + + + + +

Fields +

+
+
ContentToSizeNoStretch = 1
+

The image is scaled to fit the control without any stretching. +Either X or Y direction will be scaled to fill the entire width or height.

+
+
ContentToSizeStretch = 2
+

The image will be stretched to fill the entire width and height.

+
+
None = 0
+

The image is not scaled. The image location is translated so the top left corner +of the image bounding box is moved to the top left corner of the image control.

+
+
SizeToContent = 3
+

The control will be resized to fit the un-scaled image. If the image is larger than the +maximum size for the control, the control is set to maximum size and the image is scaled.

+
+
ViewBoxToSizeNoStretch = 4
+

Not the content of the image but its viewbox is scaled to fit the control without any stretching. +Either X or Y direction will be scaled to fill the entire width or height.

+
+
+ + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.SVGImage.html b/api/SVGImage.SVG.SVGImage.html new file mode 100644 index 0000000..8e73286 --- /dev/null +++ b/api/SVGImage.SVG.SVGImage.html @@ -0,0 +1,3021 @@ + + + + + Class SVGImage + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SVGImage + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +

This is the SVG image view control. +The image control can either load the image from a file SetImage(string) or by +setting the Drawing object through SetImage(Drawing), which allows +multiple controls to share the same drawing instance.

+
+
+ +
+
public class SVGImage : Control, IAnimatable, IFrameworkInputElement, IInputElement, ISupportInitialize, IQueryAmbient, IUriContext
+
+ + + + +
+
Inheritance
+
+ + + + + + + +
SVGImage
+
+
+ +
+
Implements
+
+ + + + + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ SVGImage() + +

+ +
+
+ +
+
public SVGImage()
+
+ + + + + + + + + + + + + +

Fields +

+ + + +

+ CustomBrushesProperty + +

+ +
+
+ +
+
public static readonly DependencyProperty CustomBrushesProperty
+
+ + + + +

Field Value

+
+
DependencyProperty
+
+
+ + + + + + + + + + +

+ ExternalFileLoaderProperty + +

+ +
+
+ +
+
public static readonly DependencyProperty ExternalFileLoaderProperty
+
+ + + + +

Field Value

+
+
DependencyProperty
+
+
+ + + + + + + + + + +

+ FileSourceProperty + +

+ +
+
+ +
+
public static readonly DependencyProperty FileSourceProperty
+
+ + + + +

Field Value

+
+
DependencyProperty
+
+
+ + + + + + + + + + +

+ ImageSourcePoperty + +

+ +
+
+ +
+
public static DependencyProperty ImageSourcePoperty
+
+ + + + +

Field Value

+
+
DependencyProperty
+
+
+ + + + + + + + + + +

+ OverrideColorProperty + +

+ +
+
+ +
+
public static readonly DependencyProperty OverrideColorProperty
+
+ + + + +

Field Value

+
+
DependencyProperty
+
+
+ + + + + + + + + + +

+ OverrideStrokeWidthProperty + +

+ +
+
+ +
+
public static readonly DependencyProperty OverrideStrokeWidthProperty
+
+ + + + +

Field Value

+
+
DependencyProperty
+
+
+ + + + + + + + + + +

+ SizeTypeProperty + +

+ +
+
+ +
+
public static DependencyProperty SizeTypeProperty
+
+ + + + +

Field Value

+
+
DependencyProperty
+
+
+ + + + + + + + + + +

+ SourceProperty + +

+ +
+
+ +
+
public static readonly DependencyProperty SourceProperty
+
+ + + + +

Field Value

+
+
DependencyProperty
+
+
+ + + + + + + + + + +

+ UriSourceProperty + +

+ +

Identifies the UriSource dependency property.

+
+
+ +
+
public static readonly DependencyProperty UriSourceProperty
+
+ + + + +

Field Value

+
+
DependencyProperty
+
+
+ + + + + + + + + + +

+ UseAnimationsProperty + +

+ +
+
+ +
+
public static readonly DependencyProperty UseAnimationsProperty
+
+ + + + +

Field Value

+
+
DependencyProperty
+
+
+ + + + + + + + + +

Properties +

+ + + + +

+ BaseUri + +

+ +

Gets or sets the base URI of the current application context.

+
+
+ +
+
public Uri BaseUri { get; set; }
+
+ + + + + +

Property Value

+
+
Uri
+

The base URI of the application context.

+
+
+ + + + + + + + + + +

+ CustomBrushes + +

+ +
+
+ +
+
public Dictionary<string, Brush> CustomBrushes { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<string, Brush>
+
+
+ + + + + + + + + + +

+ ExternalFileLoader + +

+ +
+
+ +
+
public IExternalFileLoader ExternalFileLoader { get; set; }
+
+ + + + + +

Property Value

+
+
IExternalFileLoader
+
+
+ + + + + + + + + + +

+ FileSource + +

+ +
+
+ +
+
public string FileSource { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ ImageSource + +

+ +
+
+ +
+
public Drawing ImageSource { get; set; }
+
+ + + + + +

Property Value

+
+
Drawing
+
+
+ + + + + + + + + + +

+ OverrideColor + +

+ +
+
+ +
+
public Color? OverrideColor { get; set; }
+
+ + + + + +

Property Value

+
+
Color?
+
+
+ + + + + + + + + + +

+ OverrideStrokeWidth + +

+ +
+
+ +
+
public double? OverrideStrokeWidth { get; set; }
+
+ + + + + +

Property Value

+
+
double?
+
+
+ + + + + + + + + + +

+ SVG + +

+ +
+
+ +
+
public SVG SVG { get; }
+
+ + + + + +

Property Value

+
+
SVG
+
+
+ + + + + + + + + + +

+ SizeType + +

+ +
+
+ +
+
public SVGImage.eSizeType SizeType { get; set; }
+
+ + + + + +

Property Value

+
+
SVGImage.eSizeType
+
+
+ + + + + + + + + + +

+ Source + +

+ +
+
+ +
+
public string Source { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ UriSource + +

+ +

Gets or sets the path to the SVG file to load into this Canvas.

+
+
+ +
+
public Uri UriSource { get; set; }
+
+ + + + + +

Property Value

+
+
Uri
+

A Uri specifying the path to the SVG source file. +The file can be located on a computer, network or assembly resources. +Settings this to null will close any opened diagram.

+
+
+ + + + +

Remarks

+

This is the same as the Source property, and added for consistency.

+
+ + +
+
See Also
+
+ +
+
+ + + + +

+ UseAnimations + +

+ +
+
+ +
+
public bool UseAnimations { get; set; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ ArrangeOverride(Size) + +

+ +

Called to arrange and size the content of a Control object.

+
+
+ +
+
protected override Size ArrangeOverride(Size arrangeBounds)
+
+ +

Parameters

+
+
arrangeBounds Size
+

The computed size that is used to arrange the content.

+
+
+ +

Returns

+
+
Size
+

The size of the control.

+
+
+ + + + + + + + + + + + + +

+ MeasureOverride(Size) + +

+ +

Called to remeasure a control.

+
+
+ +
+
protected override Size MeasureOverride(Size constraint)
+
+ +

Parameters

+
+
constraint Size
+

The maximum size that the method can return.

+
+
+ +

Returns

+
+
Size
+

The size of the control, up to the maximum specified by constraint.

+
+
+ + + + + + + + + + + + + +

+ OnInitialized(EventArgs) + +

+ +

Raises the Initialized event. This method is invoked whenever IsInitialized is set to true internally.

+
+
+ +
+
protected override void OnInitialized(EventArgs e)
+
+ +

Parameters

+
+
e EventArgs
+

The RoutedEventArgs that contains the event data.

+
+
+ + + + + + + + + + + + + + +

+ OnRender(DrawingContext) + +

+ +

When overridden in a derived class, participates in rendering operations that are directed by the layout system. The rendering instructions for this element are not used directly when this method is invoked, and are instead preserved for later asynchronous use by layout and drawing.

+
+
+ +
+
protected override void OnRender(DrawingContext dc)
+
+ +

Parameters

+
+
dc DrawingContext
+
+
+ + + + + + + + + + + + + + +

+ OnRenderSizeChanged(SizeChangedInfo) + +

+ +

Raises the SizeChanged event, using the specified information as part of the eventual event data.

+
+
+ +
+
protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
+
+ +

Parameters

+
+
sizeInfo SizeChangedInfo
+

Details of the old and new size involved in the change.

+
+
+ + + + + + + + + + + + + + +

+ ReRenderSvg() + +

+ +
+
+ +
+
public void ReRenderSvg()
+
+ + + + + + + + + + + + + + + +

+ SetImage(Stream) + +

+ +
+
+ +
+
public void SetImage(Stream stream)
+
+ +

Parameters

+
+
stream Stream
+
+
+ + + + + + + + + + + + + + +

+ SetImage(string) + +

+ +
+
+ +
+
public void SetImage(string svgFilename)
+
+ +

Parameters

+
+
svgFilename string
+
+
+ + + + + + + + + + + + + + +

+ SetImage(Uri) + +

+ +
+
+ +
+
public void SetImage(Uri uriSource)
+
+ +

Parameters

+
+
uriSource Uri
+
+
+ + + + + + + + + + + + + + +

+ SetImage(Drawing) + +

+ +
+
+ +
+
public void SetImage(Drawing drawing)
+
+ +

Parameters

+
+
drawing Drawing
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.SVGRender.html b/api/SVGImage.SVG.SVGRender.html new file mode 100644 index 0000000..cb62ab4 --- /dev/null +++ b/api/SVGImage.SVG.SVGRender.html @@ -0,0 +1,838 @@ + + + + + Class SVGRender + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SVGRender + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +

This is the class that creates the WPF Drawing object based on the information from the SVG class.

+
+
+ +
+
public class SVGRender
+
+ + + + +
+
Inheritance
+
+ +
SVGRender
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ SVGRender() + +

+ +
+
+ +
+
public SVGRender()
+
+ + + + + + + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ SVGRender(IExternalFileLoader) + +

+ +
+
+ +
+
public SVGRender(IExternalFileLoader fileLoader)
+
+ +

Parameters

+
+
fileLoader IExternalFileLoader
+
+
+ + + + + + + + + + +
+
See Also
+
+ + +
+
+ + +

Properties +

+ + + + +

+ CustomBrushes + +

+ +
+
+ +
+
public Dictionary<string, Brush> CustomBrushes { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<string, Brush>
+
+
+ + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ ExternalFileLoader + +

+ +
+
+ +
+
public IExternalFileLoader ExternalFileLoader { get; set; }
+
+ + + + + +

Property Value

+
+
IExternalFileLoader
+
+
+ + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ OverrideColor + +

+ +
+
+ +
+
public Color? OverrideColor { get; set; }
+
+ + + + + +

Property Value

+
+
Color?
+
+
+ + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ OverrideStrokeWidth + +

+ +
+
+ +
+
public double? OverrideStrokeWidth { get; set; }
+
+ + + + + +

Property Value

+
+
double?
+
+
+ + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ SVG + +

+ +
+
+ +
+
public SVG SVG { get; }
+
+ + + + + +

Property Value

+
+
SVG
+
+
+ + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ UseAnimations + +

+ +
+
+ +
+
public bool UseAnimations { get; set; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + +
+
See Also
+
+ + +
+
+ + +

Methods +

+ + + + +

+ CreateDrawing(SVG) + +

+ +
+
+ +
+
public DrawingGroup CreateDrawing(SVG svg)
+
+ +

Parameters

+
+
svg SVG
+
+
+ +

Returns

+
+
DrawingGroup
+
+
+ + + + + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ CreateDrawing(Shape) + +

+ +
+
+ +
+
public DrawingGroup CreateDrawing(Shape shape)
+
+ +

Parameters

+
+
shape Shape
+
+
+ +

Returns

+
+
DrawingGroup
+
+
+ + + + + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ LoadDrawing(Stream) + +

+ +
+
+ +
+
public DrawingGroup LoadDrawing(Stream stream)
+
+ +

Parameters

+
+
stream Stream
+
+
+ +

Returns

+
+
DrawingGroup
+
+
+ + + + + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ LoadDrawing(TextReader) + +

+ +
+
+ +
+
public DrawingGroup LoadDrawing(TextReader txtReader)
+
+ +

Parameters

+
+
txtReader TextReader
+
+
+ +

Returns

+
+
DrawingGroup
+
+
+ + + + + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ LoadDrawing(string) + +

+ +
+
+ +
+
public DrawingGroup LoadDrawing(string filename)
+
+ +

Parameters

+
+
filename string
+
+
+ +

Returns

+
+
DrawingGroup
+
+
+ + + + + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ LoadDrawing(Uri) + +

+ +
+
+ +
+
public DrawingGroup LoadDrawing(Uri fileUri)
+
+ +

Parameters

+
+
fileUri Uri
+
+
+ +

Returns

+
+
DrawingGroup
+
+
+ + + + + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ LoadDrawing(XmlReader) + +

+ +
+
+ +
+
public DrawingGroup LoadDrawing(XmlReader xmlReader)
+
+ +

Parameters

+
+
xmlReader XmlReader
+
+
+ +

Returns

+
+
DrawingGroup
+
+
+ + + + + + + + + +
+
See Also
+
+ + +
+
+ + + + +

+ LoadXmlDrawing(string) + +

+ +
+
+ +
+
public DrawingGroup LoadXmlDrawing(string fileXml)
+
+ +

Parameters

+
+
fileXml string
+
+
+ +

Returns

+
+
DrawingGroup
+
+
+ + + + + + + + + +
+
See Also
+
+ + +
+
+ + +

See Also

+ + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Shapes.CircleShape.html b/api/SVGImage.SVG.Shapes.CircleShape.html new file mode 100644 index 0000000..64140d6 --- /dev/null +++ b/api/SVGImage.SVG.Shapes.CircleShape.html @@ -0,0 +1,346 @@ + + + + + Class CircleShape + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class CircleShape + +

+ +
+
Namespace
SVGImage.SVG.Shapes
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class CircleShape : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
CircleShape
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ CircleShape(SVG, XmlNode) + +

+ +
+
+ +
+
public CircleShape(SVG svg, XmlNode node)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ CX + +

+ +
+
+ +
+
public double CX { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ CY + +

+ +
+
+ +
+
public double CY { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ R + +

+ +
+
+ +
+
public double R { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Shapes.Clip.html b/api/SVGImage.SVG.Shapes.Clip.html new file mode 100644 index 0000000..5da3e4c --- /dev/null +++ b/api/SVGImage.SVG.Shapes.Clip.html @@ -0,0 +1,296 @@ + + + + + Class Clip + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class Clip + +

+ +
+
Namespace
SVGImage.SVG.Shapes
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class Clip : Group
+
+ + + + +
+
Inheritance
+
+ + + + +
Clip
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ Clip(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
public Clip(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ ClipGeometry + +

+ +
+
+ +
+
public Geometry ClipGeometry { get; }
+
+ + + + + +

Property Value

+
+
Geometry
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Shapes.EllipseShape.html b/api/SVGImage.SVG.Shapes.EllipseShape.html new file mode 100644 index 0000000..0737439 --- /dev/null +++ b/api/SVGImage.SVG.Shapes.EllipseShape.html @@ -0,0 +1,377 @@ + + + + + Class EllipseShape + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class EllipseShape + +

+ +
+
Namespace
SVGImage.SVG.Shapes
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class EllipseShape : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
EllipseShape
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ EllipseShape(SVG, XmlNode) + +

+ +
+
+ +
+
public EllipseShape(SVG svg, XmlNode node)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ CX + +

+ +
+
+ +
+
public double CX { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ CY + +

+ +
+
+ +
+
public double CY { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ RX + +

+ +
+
+ +
+
public double RX { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ RY + +

+ +
+
+ +
+
public double RY { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Shapes.Group.html b/api/SVGImage.SVG.Shapes.Group.html new file mode 100644 index 0000000..0e5b4ba --- /dev/null +++ b/api/SVGImage.SVG.Shapes.Group.html @@ -0,0 +1,400 @@ + + + + + Class Group + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class Group + +

+ +
+
Namespace
SVGImage.SVG.Shapes
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public class Group : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
Group
+
+
+ + +
+
Derived
+
+ + +
+
+ +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ Group(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
public Group(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Elements + +

+ +
+
+ +
+
public IList<Shape> Elements { get; }
+
+ + + + + +

Property Value

+
+
IList<Shape>
+
+
+ + + + + + + + + + +

+ IsSwitch + +

+ +
+
+ +
+
public bool IsSwitch { get; set; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ AddToList(SVG, List<Shape>, XmlNode, Shape) + +

+ +
+
+ +
+
public static Shape AddToList(SVG svg, List<Shape> list, XmlNode childnode, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
list List<Shape>
+
+
childnode XmlNode
+
+
parent Shape
+
+
+ +

Returns

+
+
Shape
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Shapes.ImageShape.html b/api/SVGImage.SVG.Shapes.ImageShape.html new file mode 100644 index 0000000..7e0e273 --- /dev/null +++ b/api/SVGImage.SVG.Shapes.ImageShape.html @@ -0,0 +1,408 @@ + + + + + Class ImageShape + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class ImageShape + +

+ +
+
Namespace
SVGImage.SVG.Shapes
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class ImageShape : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
ImageShape
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ ImageShape(SVG, XmlNode) + +

+ +
+
+ +
+
public ImageShape(SVG svg, XmlNode node)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Height + +

+ +
+
+ +
+
public double Height { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ ImageSource + +

+ +
+
+ +
+
public ImageSource ImageSource { get; }
+
+ + + + + +

Property Value

+
+
ImageSource
+
+
+ + + + + + + + + + +

+ Width + +

+ +
+
+ +
+
public double Width { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ X + +

+ +
+
+ +
+
public double X { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Y + +

+ +
+
+ +
+
public double Y { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Shapes.LineShape.html b/api/SVGImage.SVG.Shapes.LineShape.html new file mode 100644 index 0000000..0dfe49b --- /dev/null +++ b/api/SVGImage.SVG.Shapes.LineShape.html @@ -0,0 +1,315 @@ + + + + + Class LineShape + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class LineShape + +

+ +
+
Namespace
SVGImage.SVG.Shapes
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class LineShape : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
LineShape
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ LineShape(SVG, XmlNode) + +

+ +
+
+ +
+
public LineShape(SVG svg, XmlNode node)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ P1 + +

+ +
+
+ +
+
public Point P1 { get; }
+
+ + + + + +

Property Value

+
+
Point
+
+
+ + + + + + + + + + +

+ P2 + +

+ +
+
+ +
+
public Point P2 { get; }
+
+ + + + + +

Property Value

+
+
Point
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Shapes.PolygonShape.html b/api/SVGImage.SVG.Shapes.PolygonShape.html new file mode 100644 index 0000000..e15a12c --- /dev/null +++ b/api/SVGImage.SVG.Shapes.PolygonShape.html @@ -0,0 +1,312 @@ + + + + + Class PolygonShape + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class PolygonShape + +

+ +
+
Namespace
SVGImage.SVG.Shapes
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class PolygonShape : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
PolygonShape
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ PolygonShape(SVG, XmlNode) + +

+ +
+
+ +
+
public PolygonShape(SVG svg, XmlNode node)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Fill + +

+ +
+
+ +
+
public override Fill Fill { get; }
+
+ + + + + +

Property Value

+
+
Fill
+
+
+ + + + + + + + + + +

+ Points + +

+ +
+
+ +
+
public Point[] Points { get; }
+
+ + + + + +

Property Value

+
+
Point[]
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Shapes.PolylineShape.html b/api/SVGImage.SVG.Shapes.PolylineShape.html new file mode 100644 index 0000000..4e4fdd8 --- /dev/null +++ b/api/SVGImage.SVG.Shapes.PolylineShape.html @@ -0,0 +1,284 @@ + + + + + Class PolylineShape + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class PolylineShape + +

+ +
+
Namespace
SVGImage.SVG.Shapes
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class PolylineShape : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
PolylineShape
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ PolylineShape(SVG, XmlNode) + +

+ +
+
+ +
+
public PolylineShape(SVG svg, XmlNode node)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Points + +

+ +
+
+ +
+
public Point[] Points { get; }
+
+ + + + + +

Property Value

+
+
Point[]
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Shapes.RectangleShape.html b/api/SVGImage.SVG.Shapes.RectangleShape.html new file mode 100644 index 0000000..d41dc0b --- /dev/null +++ b/api/SVGImage.SVG.Shapes.RectangleShape.html @@ -0,0 +1,506 @@ + + + + + Class RectangleShape + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class RectangleShape + +

+ +
+
Namespace
SVGImage.SVG.Shapes
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class RectangleShape : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
RectangleShape
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ RectangleShape(SVG, XmlNode) + +

+ +
+
+ +
+
public RectangleShape(SVG svg, XmlNode node)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Fill + +

+ +
+
+ +
+
public override Fill Fill { get; }
+
+ + + + + +

Property Value

+
+
Fill
+
+
+ + + + + + + + + + +

+ Height + +

+ +
+
+ +
+
public double Height { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ RX + +

+ +
+
+ +
+
public double RX { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ RY + +

+ +
+
+ +
+
public double RY { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Width + +

+ +
+
+ +
+
public double Width { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ X + +

+ +
+
+ +
+
public double X { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Y + +

+ +
+
+ +
+
public double Y { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Parse(SVG, string, string) + +

+ +
+
+ +
+
protected override void Parse(SVG svg, string name, string value)
+
+ +

Parameters

+
+
svg SVG
+
+
name string
+
+
value string
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Shapes.Shape.html b/api/SVGImage.SVG.Shapes.Shape.html new file mode 100644 index 0000000..44937ae --- /dev/null +++ b/api/SVGImage.SVG.Shapes.Shape.html @@ -0,0 +1,980 @@ + + + + + Class Shape + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class Shape + +

+ +
+
Namespace
SVGImage.SVG.Shapes
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public class Shape : ClipArtElement
+
+ + + + +
+
Inheritance
+
+ + +
Shape
+
+
+ + +
+
Derived
+
+ + + + + + + + + + + + + + +
+
+ +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ Shape(SVG, List<StyleItem>, Shape) + +

+ +
+
+ +
+
public Shape(SVG svg, List<StyleItem> attrs, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
attrs List<StyleItem>
+
+
parent Shape
+
+
+ + + + + + + + + + + + + + +

+ Shape(SVG, XmlNode) + +

+ +
+
+ +
+
public Shape(SVG svg, XmlNode node)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
+ + + + + + + + + + + + + + +

+ Shape(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
public Shape(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ Display + +

+ +
+
+ +
+
public bool Display
+
+ + + + +

Field Value

+
+
bool
+
+
+ + + + + + + + + + +

+ m_fill + +

+ +
+
+ +
+
protected Fill m_fill
+
+ + + + +

Field Value

+
+
Fill
+
+
+ + + + + + + + + + +

+ m_localStyle + +

+ +
+
+ +
+
protected string m_localStyle
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ m_stroke + +

+ +
+
+ +
+
protected Stroke m_stroke
+
+ + + + +

Field Value

+
+
Stroke
+
+
+ + + + + + + + + + +

+ m_textstyle + +

+ +
+
+ +
+
protected TextStyle m_textstyle
+
+ + + + +

Field Value

+
+
TextStyle
+
+
+ + + + + + + + + +

Properties +

+ + + + +

+ Fill + +

+ +
+
+ +
+
public virtual Fill Fill { get; set; }
+
+ + + + + +

Property Value

+
+
Fill
+
+
+ + + + + + + + + + +

+ Opacity + +

+ +
+
+ +
+
public double Opacity { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ PaintServerKey + +

+ +
+
+ +
+
public virtual string PaintServerKey { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Parent + +

+ +
+
+ +
+
public Shape Parent { get; set; }
+
+ + + + + +

Property Value

+
+
Shape
+
+
+ + + + + + + + + + +

+ RequiredExtensions + +

+ +
+
+ +
+
public string RequiredExtensions { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ RequiredFeatures + +

+ +
+
+ +
+
public string RequiredFeatures { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Stroke + +

+ +
+
+ +
+
public virtual Stroke Stroke { get; set; }
+
+ + + + + +

Property Value

+
+
Stroke
+
+
+ + + + + + + + + + +

+ TextStyle + +

+ +
+
+ +
+
public virtual TextStyle TextStyle { get; }
+
+ + + + + +

Property Value

+
+
TextStyle
+
+
+ + + + + + + + + + +

+ Transform + +

+ +
+
+ +
+
public virtual Transform Transform { get; }
+
+ + + + + +

Property Value

+
+
Transform
+
+
+ + + + + + + + + + +

+ Visibility + +

+ +
+
+ +
+
public Visibility Visibility { get; set; }
+
+ + + + + +

Property Value

+
+
Visibility
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ GetFill(SVG) + +

+ +
+
+ +
+
protected Fill GetFill(SVG svg)
+
+ +

Parameters

+
+
svg SVG
+
+
+ +

Returns

+
+
Fill
+
+
+ + + + + + + + + + + + + +

+ GetTextStyle(SVG) + +

+ +
+
+ +
+
protected TextStyle GetTextStyle(SVG svg)
+
+ +

Parameters

+
+
svg SVG
+
+
+ +

Returns

+
+
TextStyle
+
+
+ + + + + + + + + + + + + +

+ Parse(SVG, string, string) + +

+ +
+
+ +
+
protected virtual void Parse(SVG svg, string name, string value)
+
+ +

Parameters

+
+
svg SVG
+
+
name string
+
+
value string
+
+
+ + + + + + + + + + + + + + +

+ ParseAtStart(SVG, XmlNode) + +

+ +
+
+ +
+
protected virtual void ParseAtStart(SVG svg, XmlNode node)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
+ + + + + + + + + + + + + + +

+ ParseLocalStyle(SVG) + +

+ +
+
+ +
+
protected virtual void ParseLocalStyle(SVG svg)
+
+ +

Parameters

+
+
svg SVG
+
+
+ + + + + + + + + + + + + + +

+ ToString() + +

+ +

Returns a string that represents the current object.

+
+
+ +
+
public override string ToString()
+
+ + +

Returns

+
+
string
+

A string that represents the current object.

+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Shapes.UseShape.html b/api/SVGImage.SVG.Shapes.UseShape.html new file mode 100644 index 0000000..e84bbe9 --- /dev/null +++ b/api/SVGImage.SVG.Shapes.UseShape.html @@ -0,0 +1,385 @@ + + + + + Class UseShape + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class UseShape + +

+ +
+
Namespace
SVGImage.SVG.Shapes
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class UseShape : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
UseShape
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ UseShape(SVG, XmlNode) + +

+ +
+
+ +
+
public UseShape(SVG svg, XmlNode node)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ X + +

+ +
+
+ +
+
public double X { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Y + +

+ +
+
+ +
+
public double Y { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ hRef + +

+ +
+
+ +
+
public string hRef { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Parse(SVG, string, string) + +

+ +
+
+ +
+
protected override void Parse(SVG svg, string name, string value)
+
+ +

Parameters

+
+
svg SVG
+
+
name string
+
+
value string
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Shapes.html b/api/SVGImage.SVG.Shapes.html new file mode 100644 index 0000000..ff58e78 --- /dev/null +++ b/api/SVGImage.SVG.Shapes.html @@ -0,0 +1,167 @@ + + + + + Namespace SVGImage.SVG.Shapes + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Stroke.eLineCap.html b/api/SVGImage.SVG.Stroke.eLineCap.html new file mode 100644 index 0000000..f5e0bd5 --- /dev/null +++ b/api/SVGImage.SVG.Stroke.eLineCap.html @@ -0,0 +1,154 @@ + + + + + Enum Stroke.eLineCap + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+ Enum Stroke.eLineCap + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public enum Stroke.eLineCap
+
+ + + + + + + + + +

Fields +

+
+
butt = 0
+
+
round = 1
+
+
square = 2
+
+
+ + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Stroke.eLineJoin.html b/api/SVGImage.SVG.Stroke.eLineJoin.html new file mode 100644 index 0000000..a88ab18 --- /dev/null +++ b/api/SVGImage.SVG.Stroke.eLineJoin.html @@ -0,0 +1,154 @@ + + + + + Enum Stroke.eLineJoin + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+ Enum Stroke.eLineJoin + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public enum Stroke.eLineJoin
+
+ + + + + + + + + +

Fields +

+
+
bevel = 2
+
+
miter = 0
+
+
round = 1
+
+
+ + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Stroke.html b/api/SVGImage.SVG.Stroke.html new file mode 100644 index 0000000..3e8a11d --- /dev/null +++ b/api/SVGImage.SVG.Stroke.html @@ -0,0 +1,483 @@ + + + + + Class Stroke + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class Stroke + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class Stroke
+
+ + + + +
+
Inheritance
+
+ +
Stroke
+
+
+ + + +
+
Inherited Members
+
+ + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ Stroke(SVG) + +

+ +
+
+ +
+
public Stroke(SVG svg)
+
+ +

Parameters

+
+
svg SVG
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ LineCap + +

+ +
+
+ +
+
public Stroke.eLineCap LineCap { get; set; }
+
+ + + + + +

Property Value

+
+
Stroke.eLineCap
+
+
+ + + + + + + + + + +

+ LineJoin + +

+ +
+
+ +
+
public Stroke.eLineJoin LineJoin { get; set; }
+
+ + + + + +

Property Value

+
+
Stroke.eLineJoin
+
+
+ + + + + + + + + + +

+ Opacity + +

+ +
+
+ +
+
public double Opacity { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ PaintServerKey + +

+ +
+
+ +
+
public string PaintServerKey { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ StrokeArray + +

+ +
+
+ +
+
public double[] StrokeArray { get; set; }
+
+ + + + + +

Property Value

+
+
double[]
+
+
+ + + + + + + + + + +

+ Width + +

+ +
+
+ +
+
public double Width { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ IsEmpty(SVG) + +

+ +
+
+ +
+
public bool IsEmpty(SVG svg)
+
+ +

Parameters

+
+
svg SVG
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + + +

+ StrokeBrush(SVG, SVGRender, Shape, double, Rect) + +

+ +
+
+ +
+
public Brush StrokeBrush(SVG svg, SVGRender svgRender, Shape shape, double elementOpacity, Rect bounds)
+
+ +

Parameters

+
+
svg SVG
+
+
svgRender SVGRender
+
+
shape Shape
+
+
elementOpacity double
+
+
bounds Rect
+
+
+ +

Returns

+
+
Brush
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.StyleItem.html b/api/SVGImage.SVG.StyleItem.html new file mode 100644 index 0000000..110434a --- /dev/null +++ b/api/SVGImage.SVG.StyleItem.html @@ -0,0 +1,352 @@ + + + + + Class StyleItem + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class StyleItem + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public class StyleItem
+
+ + + + +
+
Inheritance
+
+ +
StyleItem
+
+
+ + + +
+
Inherited Members
+
+ + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ StyleItem(string, string) + +

+ +
+
+ +
+
public StyleItem(string name, string value)
+
+ +

Parameters

+
+
name string
+
+
value string
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Name + +

+ +
+
+ +
+
public string Name { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Value + +

+ +
+
+ +
+
public string Value { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ ReadNextAttr(string, ref int) + +

+ +
+
+ +
+
public static StyleItem ReadNextAttr(string inputstring, ref int startpos)
+
+ +

Parameters

+
+
inputstring string
+
+
startpos int
+
+
+ +

Returns

+
+
StyleItem
+
+
+ + + + + + + + + + + + + +

+ ToString() + +

+ +

Returns a string that represents the current object.

+
+
+ +
+
public override string ToString()
+
+ + +

Returns

+
+
string
+

A string that represents the current object.

+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.SvgIconBase.html b/api/SVGImage.SVG.SvgIconBase.html new file mode 100644 index 0000000..b8b112c --- /dev/null +++ b/api/SVGImage.SVG.SvgIconBase.html @@ -0,0 +1,575 @@ + + + + + Class SvgIconBase + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SvgIconBase + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +

This is an abstract implementation of a markup extension that enables the creation +of DrawingImage from SVG sources.

+
+
+ +
+
public abstract class SvgIconBase : MarkupExtension
+
+ + + + +
+
Inheritance
+
+ + +
SvgIconBase
+
+
+ + +
+
Derived
+
+ + +
+
+ +
+
Inherited Members
+
+ + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ SvgIconBase() + +

+ +

Initializes a new instance of the SvgIconBase +class with the default parameters.

+
+
+ +
+
protected SvgIconBase()
+
+ + + + + + + + + + + + + +

Fields +

+ + + +

+ _appName + +

+ +
+
+ +
+
protected string _appName
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ _culture + +

+ +
+
+ +
+
protected CultureInfo _culture
+
+ + + + +

Field Value

+
+
CultureInfo
+
+
+ + + + + + + + + +

Properties +

+ + + + +

+ AppName + +

+ +

Gets or sets the project or application name of the target assembly.

+
+
+ +
+
public string AppName { get; set; }
+
+ + + + + +

Property Value

+
+
string
+

A string specifying the application project name.

+
+
+ + + + +

Remarks

+

This is optional and is only used to resolve the resource Uri at the design time.

+
+ + + + + + +

+ CultureInfo + +

+ +

Gets or sets the main culture information used for rendering texts.

+
+
+ +
+
public CultureInfo CultureInfo { get; set; }
+
+ + + + + +

Property Value

+
+
CultureInfo
+

An instance of the CultureInfo specifying the main +culture information for texts. The default is the English culture.

+
+
+ + + + +

Remarks

+

+This is the culture information passed to the FormattedText +class instance for the text rendering. +

+

+The library does not currently provide any means of splitting texts +into its multi-language parts. +

+
+ + + + + + +

+ OverrideColor + +

+ +
+
+ +
+
public Color? OverrideColor { get; set; }
+
+ + + + + +

Property Value

+
+
Color?
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ GetAppName() + +

+ +
+
+ +
+
protected void GetAppName()
+
+ + + + + + + + + + + + + + + +

+ GetDrawing(Uri) + +

+ +

This converts the SVG resource specified by the Uri to DrawingGroup.

+
+
+ +
+
protected virtual DrawingGroup GetDrawing(Uri svgSource)
+
+ +

Parameters

+
+
svgSource Uri
+

A Uri specifying the source of the SVG resource.

+
+
+ +

Returns

+
+
DrawingGroup
+

A DrawingGroup of the converted SVG resource.

+
+
+ + + + + + + + + + + + + +

+ GetEntryAssembly() + +

+ +
+
+ +
+
protected Assembly GetEntryAssembly()
+
+ + +

Returns

+
+
Assembly
+
+
+ + + + + + + + + + + + + +

+ GetExecutingAssembly() + +

+ +
+
+ +
+
protected Assembly GetExecutingAssembly()
+
+ + +

Returns

+
+
Assembly
+
+
+ + + + + + + + + + + + + +

+ GetImage(Uri) + +

+ +

This converts the SVG resource specified by the Uri to DrawingImage.

+
+
+ +
+
protected virtual DrawingImage GetImage(Uri svgSource)
+
+ +

Parameters

+
+
svgSource Uri
+

A Uri specifying the source of the SVG resource.

+
+
+ +

Returns

+
+
DrawingImage
+

A DrawingImage of the converted SVG resource.

+
+
+ + + + + + + +

Remarks

+

This uses the GetDrawing(Uri) method to convert the SVG resource to DrawingGroup, +which is then wrapped in DrawingImage.

+
+ + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.SvgIconConverterExtension.html b/api/SVGImage.SVG.SvgIconConverterExtension.html new file mode 100644 index 0000000..4daf134 --- /dev/null +++ b/api/SVGImage.SVG.SvgIconConverterExtension.html @@ -0,0 +1,405 @@ + + + + + Class SvgIconConverterExtension + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SvgIconConverterExtension + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +

This implements a markup extension that enables the creation +of DrawingImage from SVG sources.

+
+
+ +
+
public sealed class SvgIconConverterExtension : SvgIconBase, IValueConverter
+
+ + + + +
+
Inheritance
+
+ + + +
SvgIconConverterExtension
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + +
+ + + + +

Remarks

+

The SVG source file can be:

+
  • From the web
  • From the local computer (relative or absolute paths)
  • From the resources.
+

+The rendering settings are provided as properties for customizations. +

+
+ + +

Constructors +

+ + + + +

+ SvgIconConverterExtension() + +

+ +

Initializes a new instance of the SvgIconConverterExtension +class with the default parameters.

+
+
+ +
+
public SvgIconConverterExtension()
+
+ + + + + + + + + + + + + + + +

+ SvgIconConverterExtension(Uri) + +

+ +
+
+ +
+
public SvgIconConverterExtension(Uri baseUri)
+
+ +

Parameters

+
+
baseUri Uri
+
+
+ + + + + + + + + + + + +

Methods +

+ + + + +

+ Convert(object, Type, object, CultureInfo) + +

+ +

Converts a value.

+
+
+ +
+
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+
+ +

Parameters

+
+
value object
+

The value produced by the binding source.

+
+
targetType Type
+

The type of the binding target property.

+
+
parameter object
+

The converter parameter to use.

+
+
culture CultureInfo
+

The culture to use in the converter.

+
+
+ +

Returns

+
+
object
+

A converted value. If the method returns null, the valid null value is used.

+
+
+ + + + + + + + + + + + + +

+ ConvertBack(object, Type, object, CultureInfo) + +

+ +

Converts a value.

+
+
+ +
+
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+
+ +

Parameters

+
+
value object
+

The value that is produced by the binding target.

+
+
targetType Type
+

The type to convert to.

+
+
parameter object
+

The converter parameter to use.

+
+
culture CultureInfo
+

The culture to use in the converter.

+
+
+ +

Returns

+
+
object
+

A converted value. If the method returns null, the valid null value is used.

+
+
+ + + + + + + + + + + + + +

+ ProvideValue(IServiceProvider) + +

+ +

Performs the conversion of a valid SVG source file to the +DrawingImage that is set as the value of the target +property for this markup extension.

+
+
+ +
+
public override object ProvideValue(IServiceProvider serviceProvider)
+
+ +

Parameters

+
+
serviceProvider IServiceProvider
+

Object that can provide services for the markup extension.

+
+
+ +

Returns

+
+
object
+

This returns DrawingImage if successful; otherwise, it +returns null.

+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.SvgIconExtension.html b/api/SVGImage.SVG.SvgIconExtension.html new file mode 100644 index 0000000..015de2d --- /dev/null +++ b/api/SVGImage.SVG.SvgIconExtension.html @@ -0,0 +1,343 @@ + + + + + Class SvgIconExtension + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SvgIconExtension + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +

This implements a markup extension that enables the creation +of DrawingImage from SVG sources.

+
+
+ +
+
public sealed class SvgIconExtension : SvgIconBase
+
+ + + + +
+
Inheritance
+
+ + + +
SvgIconExtension
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + +
+ + + + +

Remarks

+

The SVG source file can be:

+
  • From the web
  • From the local computer (relative or absolute paths)
  • From the resources.
+

+The rendering settings are provided as properties for customizations. +

+
+ + +

Constructors +

+ + + + +

+ SvgIconExtension() + +

+ +

Initializes a new instance of the SvgIconExtension +class with the default parameters.

+
+
+ +
+
public SvgIconExtension()
+
+ + + + + + + + + + + + + + + +

+ SvgIconExtension(string) + +

+ +

Initializes a new instance of the SvgIconExtension +class with the specified SVG file path.

+
+
+ +
+
public SvgIconExtension(string svgPath)
+
+ +

Parameters

+
+
svgPath string
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Source + +

+ +

Gets or sets the SVG source file.

+
+
+ +
+
public string Source { get; set; }
+
+ + + + + +

Property Value

+
+
string
+

A string specifying the path of the SVG source file. +The default is null.

+
+
+ + + + + + + + +

Methods +

+ + + + +

+ ProvideValue(IServiceProvider) + +

+ +

Performs the conversion of a valid SVG source file to the +DrawingImage that is set as the value of the target +property for this markup extension.

+
+
+ +
+
public override object ProvideValue(IServiceProvider serviceProvider)
+
+ +

Parameters

+
+
serviceProvider IServiceProvider
+

Object that can provide services for the markup extension.

+
+
+ +

Returns

+
+
object
+

This returns DrawingImage if successful; otherwise, it +returns null.

+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.TextShape.html b/api/SVGImage.SVG.TextShape.html new file mode 100644 index 0000000..cf411be --- /dev/null +++ b/api/SVGImage.SVG.TextShape.html @@ -0,0 +1,435 @@ + + + + + Class TextShape + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class TextShape + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class TextShape : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
TextShape
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ TextShape(SVG, XmlNode, Shape) + +

+ +
+
+ +
+
public TextShape(SVG svg, XmlNode node, Shape parent)
+
+ +

Parameters

+
+
svg SVG
+
+
node XmlNode
+
+
parent Shape
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Fill + +

+ +
+
+ +
+
public override Fill Fill { get; }
+
+ + + + + +

Property Value

+
+
Fill
+
+
+ + + + + + + + + + +

+ Stroke + +

+ +
+
+ +
+
public override Stroke Stroke { get; }
+
+ + + + + +

Property Value

+
+
Stroke
+
+
+ + + + + + + + + + +

+ Text + +

+ +
+
+ +
+
public string Text { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ TextSpan + +

+ +
+
+ +
+
public TextSpan TextSpan { get; }
+
+ + + + + +

Property Value

+
+
TextSpan
+
+
+ + + + + + + + + + +

+ X + +

+ +
+
+ +
+
public double X { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Y + +

+ +
+
+ +
+
public double Y { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.TextSpan.eElementType.html b/api/SVGImage.SVG.TextSpan.eElementType.html new file mode 100644 index 0000000..7fd229d --- /dev/null +++ b/api/SVGImage.SVG.TextSpan.eElementType.html @@ -0,0 +1,152 @@ + + + + + Enum TextSpan.eElementType + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+ Enum TextSpan.eElementType + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public enum TextSpan.eElementType
+
+ + + + + + + + + +

Fields +

+
+
Tag = 0
+
+
Text = 1
+
+
+ + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.TextSpan.html b/api/SVGImage.SVG.TextSpan.html new file mode 100644 index 0000000..8a4815c --- /dev/null +++ b/api/SVGImage.SVG.TextSpan.html @@ -0,0 +1,643 @@ + + + + + Class TextSpan + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class TextSpan + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public class TextSpan : Shape
+
+ + + + +
+
Inheritance
+
+ + + +
TextSpan
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ TextSpan(SVG, Shape, eElementType, List<StyleItem>) + +

+ +
+
+ +
+
public TextSpan(SVG svg, Shape parent, TextSpan.eElementType eType, List<StyleItem> attrs)
+
+ +

Parameters

+
+
svg SVG
+
+
parent Shape
+
+
eType TextSpan.eElementType
+
+
attrs List<StyleItem>
+
+
+ + + + + + + + + + + + + + +

+ TextSpan(SVG, Shape, string) + +

+ +
+
+ +
+
public TextSpan(SVG svg, Shape parent, string text)
+
+ +

Parameters

+
+
svg SVG
+
+
parent Shape
+
+
text string
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Attributes + +

+ +
+
+ +
+
public List<StyleItem> Attributes { get; set; }
+
+ + + + + +

Property Value

+
+
List<StyleItem>
+
+
+ + + + + + + + + + +

+ Children + +

+ +
+
+ +
+
public List<TextSpan> Children { get; }
+
+ + + + + +

Property Value

+
+
List<TextSpan>
+
+
+ + + + + + + + + + +

+ ElementType + +

+ +
+
+ +
+
public TextSpan.eElementType ElementType { get; }
+
+ + + + + +

Property Value

+
+
TextSpan.eElementType
+
+
+ + + + + + + + + + +

+ End + +

+ +
+
+ +
+
public TextSpan End { get; set; }
+
+ + + + + +

Property Value

+
+
TextSpan
+
+
+ + + + + + + + + + +

+ StartIndex + +

+ +
+
+ +
+
public int StartIndex { get; set; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + + + + +

+ Text + +

+ +
+
+ +
+
public string Text { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Transform + +

+ +
+
+ +
+
public override Transform Transform { get; }
+
+ + + + + +

Property Value

+
+
Transform
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Parse(SVG, string, TextShape) + +

+ +
+
+ +
+
public static TextSpan Parse(SVG svg, string text, TextShape owner)
+
+ +

Parameters

+
+
svg SVG
+
+
text string
+
+
owner TextShape
+
+
+ +

Returns

+
+
TextSpan
+
+
+ + + + + + + + + + + + + +

+ Print(TextSpan, string) + +

+ +
+
+ +
+
public static void Print(TextSpan tag, string indent)
+
+ +

Parameters

+
+
tag TextSpan
+
+
indent string
+
+
+ + + + + + + + + + + + + + +

+ ToString() + +

+ +

Returns a string that represents the current object.

+
+
+ +
+
public override string ToString()
+
+ + +

Returns

+
+
string
+

A string that represents the current object.

+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.TextStyle.html b/api/SVGImage.SVG.TextStyle.html new file mode 100644 index 0000000..6f003f4 --- /dev/null +++ b/api/SVGImage.SVG.TextStyle.html @@ -0,0 +1,560 @@ + + + + + Class TextStyle + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class TextStyle + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public sealed class TextStyle
+
+ + + + +
+
Inheritance
+
+ +
TextStyle
+
+
+ + + +
+
Inherited Members
+
+ + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ TextStyle(SVG, Shape) + +

+ +
+
+ +
+
public TextStyle(SVG svg, Shape owner)
+
+ +

Parameters

+
+
svg SVG
+
+
owner Shape
+
+
+ + + + + + + + + + + + + + +

+ TextStyle(TextStyle) + +

+ +
+
+ +
+
public TextStyle(TextStyle aCopy)
+
+ +

Parameters

+
+
aCopy TextStyle
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ BaseLineShift + +

+ +
+
+ +
+
public string BaseLineShift { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ FontFamily + +

+ +
+
+ +
+
public string FontFamily { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ FontSize + +

+ +
+
+ +
+
public double FontSize { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Fontstyle + +

+ +
+
+ +
+
public FontStyle Fontstyle { get; set; }
+
+ + + + + +

Property Value

+
+
FontStyle
+
+
+ + + + + + + + + + +

+ Fontweight + +

+ +
+
+ +
+
public FontWeight Fontweight { get; set; }
+
+ + + + + +

Property Value

+
+
FontWeight
+
+
+ + + + + + + + + + +

+ LetterSpacing + +

+ +
+
+ +
+
public double LetterSpacing { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ TextAlignment + +

+ +
+
+ +
+
public TextAlignment TextAlignment { get; set; }
+
+ + + + + +

Property Value

+
+
TextAlignment
+
+
+ + + + + + + + + + +

+ TextDecoration + +

+ +
+
+ +
+
public TextDecorationCollection TextDecoration { get; set; }
+
+ + + + + +

Property Value

+
+
TextDecorationCollection
+
+
+ + + + + + + + + + +

+ WordSpacing + +

+ +
+
+ +
+
public double WordSpacing { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Copy(TextStyle) + +

+ +
+
+ +
+
public void Copy(TextStyle aCopy)
+
+ +

Parameters

+
+
aCopy TextStyle
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.Visibility.html b/api/SVGImage.SVG.Visibility.html new file mode 100644 index 0000000..ed02627 --- /dev/null +++ b/api/SVGImage.SVG.Visibility.html @@ -0,0 +1,152 @@ + + + + + Enum Visibility + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+ Enum Visibility + +

+ +
+
Namespace
SVGImage.SVG
+
Assembly
DotNetProjects.SVGImage.dll
+
+ +
+
+ +
+
public enum Visibility
+
+ + + + + + + + + +

Fields +

+
+
Hidden = 1
+
+
Visible = 0
+
+
+ + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/SVGImage.SVG.html b/api/SVGImage.SVG.html new file mode 100644 index 0000000..c0eb172 --- /dev/null +++ b/api/SVGImage.SVG.html @@ -0,0 +1,219 @@ + + + + + Namespace SVGImage.SVG + | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace SVGImage.SVG +

+
+
+
+ +

+Classes +

+
+
ClipArtElement
+
+
+
+
Fill
+
+
+
+
PathShape
+
+
+
+
SVG
+

This is the class that reads and parses the XML file.

+
+
+
+
SVGImage
+

This is the SVG image view control. +The image control can either load the image from a file SetImage(string) or by +setting the Drawing object through SetImage(Drawing), which allows +multiple controls to share the same drawing instance.

+
+
+
+
SVGRender
+

This is the class that creates the WPF Drawing object based on the information from the SVG class.

+
+
+
+
Stroke
+
+
+
+
StyleItem
+
+
+
+
SvgIconBase
+

This is an abstract implementation of a markup extension that enables the creation +of DrawingImage from SVG sources.

+
+
+
+
SvgIconConverterExtension
+

This implements a markup extension that enables the creation +of DrawingImage from SVG sources.

+
+
+
+
SvgIconExtension
+

This implements a markup extension that enables the creation +of DrawingImage from SVG sources.

+
+
+
+
TextShape
+
+
+
+
TextSpan
+
+
+
+
TextStyle
+
+
+

+Enums +

+
+
Fill.eFillRule
+
+
+
+
SVGImage.eSizeType
+

This controls how the image is stretched to fill the control,

+
+
+
+
Stroke.eLineCap
+
+
+
+
Stroke.eLineJoin
+
+
+
+
TextSpan.eElementType
+
+
+
+
Visibility
+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/index.html b/api/index.html new file mode 100644 index 0000000..0586dca --- /dev/null +++ b/api/index.html @@ -0,0 +1,127 @@ + + + + + SVGImage API Reference | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + + + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/api/toc.html b/api/toc.html new file mode 100644 index 0000000..33d4001 --- /dev/null +++ b/api/toc.html @@ -0,0 +1,214 @@ + +
+
+
+
+ + + +
+
+ +
+
diff --git a/api/toc.json b/api/toc.json new file mode 100644 index 0000000..f0aa13d --- /dev/null +++ b/api/toc.json @@ -0,0 +1,2 @@ + +{"items":[{"name":"SVGImage.SVG","href":"SVGImage.SVG.html","topicHref":"SVGImage.SVG.html","topicUid":"SVGImage.SVG","items":[{"name":"ClipArtElement","href":"SVGImage.SVG.ClipArtElement.html","topicHref":"SVGImage.SVG.ClipArtElement.html","topicUid":"SVGImage.SVG.ClipArtElement"},{"name":"Fill","href":"SVGImage.SVG.Fill.html","topicHref":"SVGImage.SVG.Fill.html","topicUid":"SVGImage.SVG.Fill"},{"name":"Fill.eFillRule","href":"SVGImage.SVG.Fill.eFillRule.html","topicHref":"SVGImage.SVG.Fill.eFillRule.html","topicUid":"SVGImage.SVG.Fill.eFillRule"},{"name":"PathShape","href":"SVGImage.SVG.PathShape.html","topicHref":"SVGImage.SVG.PathShape.html","topicUid":"SVGImage.SVG.PathShape"},{"name":"SVG","href":"SVGImage.SVG.SVG.html","topicHref":"SVGImage.SVG.SVG.html","topicUid":"SVGImage.SVG.SVG"},{"name":"SVGImage","href":"SVGImage.SVG.SVGImage.html","topicHref":"SVGImage.SVG.SVGImage.html","topicUid":"SVGImage.SVG.SVGImage"},{"name":"SVGImage.eSizeType","href":"SVGImage.SVG.SVGImage.eSizeType.html","topicHref":"SVGImage.SVG.SVGImage.eSizeType.html","topicUid":"SVGImage.SVG.SVGImage.eSizeType"},{"name":"SVGRender","href":"SVGImage.SVG.SVGRender.html","topicHref":"SVGImage.SVG.SVGRender.html","topicUid":"SVGImage.SVG.SVGRender"},{"name":"Stroke","href":"SVGImage.SVG.Stroke.html","topicHref":"SVGImage.SVG.Stroke.html","topicUid":"SVGImage.SVG.Stroke"},{"name":"Stroke.eLineCap","href":"SVGImage.SVG.Stroke.eLineCap.html","topicHref":"SVGImage.SVG.Stroke.eLineCap.html","topicUid":"SVGImage.SVG.Stroke.eLineCap"},{"name":"Stroke.eLineJoin","href":"SVGImage.SVG.Stroke.eLineJoin.html","topicHref":"SVGImage.SVG.Stroke.eLineJoin.html","topicUid":"SVGImage.SVG.Stroke.eLineJoin"},{"name":"StyleItem","href":"SVGImage.SVG.StyleItem.html","topicHref":"SVGImage.SVG.StyleItem.html","topicUid":"SVGImage.SVG.StyleItem"},{"name":"SvgIconBase","href":"SVGImage.SVG.SvgIconBase.html","topicHref":"SVGImage.SVG.SvgIconBase.html","topicUid":"SVGImage.SVG.SvgIconBase"},{"name":"SvgIconConverterExtension","href":"SVGImage.SVG.SvgIconConverterExtension.html","topicHref":"SVGImage.SVG.SvgIconConverterExtension.html","topicUid":"SVGImage.SVG.SvgIconConverterExtension"},{"name":"SvgIconExtension","href":"SVGImage.SVG.SvgIconExtension.html","topicHref":"SVGImage.SVG.SvgIconExtension.html","topicUid":"SVGImage.SVG.SvgIconExtension"},{"name":"TextShape","href":"SVGImage.SVG.TextShape.html","topicHref":"SVGImage.SVG.TextShape.html","topicUid":"SVGImage.SVG.TextShape"},{"name":"TextSpan","href":"SVGImage.SVG.TextSpan.html","topicHref":"SVGImage.SVG.TextSpan.html","topicUid":"SVGImage.SVG.TextSpan"},{"name":"TextSpan.eElementType","href":"SVGImage.SVG.TextSpan.eElementType.html","topicHref":"SVGImage.SVG.TextSpan.eElementType.html","topicUid":"SVGImage.SVG.TextSpan.eElementType"},{"name":"TextStyle","href":"SVGImage.SVG.TextStyle.html","topicHref":"SVGImage.SVG.TextStyle.html","topicUid":"SVGImage.SVG.TextStyle"},{"name":"Visibility","href":"SVGImage.SVG.Visibility.html","topicHref":"SVGImage.SVG.Visibility.html","topicUid":"SVGImage.SVG.Visibility"}]},{"name":"SVGImage.SVG.Animation","href":"SVGImage.SVG.Animation.html","topicHref":"SVGImage.SVG.Animation.html","topicUid":"SVGImage.SVG.Animation","items":[{"name":"Animate","href":"SVGImage.SVG.Animation.Animate.html","topicHref":"SVGImage.SVG.Animation.Animate.html","topicUid":"SVGImage.SVG.Animation.Animate"},{"name":"AnimateColor","href":"SVGImage.SVG.Animation.AnimateColor.html","topicHref":"SVGImage.SVG.Animation.AnimateColor.html","topicUid":"SVGImage.SVG.Animation.AnimateColor"},{"name":"AnimateMotion","href":"SVGImage.SVG.Animation.AnimateMotion.html","topicHref":"SVGImage.SVG.Animation.AnimateMotion.html","topicUid":"SVGImage.SVG.Animation.AnimateMotion"},{"name":"AnimateTransform","href":"SVGImage.SVG.Animation.AnimateTransform.html","topicHref":"SVGImage.SVG.Animation.AnimateTransform.html","topicUid":"SVGImage.SVG.Animation.AnimateTransform"},{"name":"AnimateTransformType","href":"SVGImage.SVG.Animation.AnimateTransformType.html","topicHref":"SVGImage.SVG.Animation.AnimateTransformType.html","topicUid":"SVGImage.SVG.Animation.AnimateTransformType"},{"name":"AnimationBase","href":"SVGImage.SVG.Animation.AnimationBase.html","topicHref":"SVGImage.SVG.Animation.AnimationBase.html","topicUid":"SVGImage.SVG.Animation.AnimationBase"}]},{"name":"SVGImage.SVG.FileLoaders","href":"SVGImage.SVG.FileLoaders.html","topicHref":"SVGImage.SVG.FileLoaders.html","topicUid":"SVGImage.SVG.FileLoaders","items":[{"name":"FileSystemLoader","href":"SVGImage.SVG.FileLoaders.FileSystemLoader.html","topicHref":"SVGImage.SVG.FileLoaders.FileSystemLoader.html","topicUid":"SVGImage.SVG.FileLoaders.FileSystemLoader"},{"name":"IExternalFileLoader","href":"SVGImage.SVG.FileLoaders.IExternalFileLoader.html","topicHref":"SVGImage.SVG.FileLoaders.IExternalFileLoader.html","topicUid":"SVGImage.SVG.FileLoaders.IExternalFileLoader"}]},{"name":"SVGImage.SVG.Filters","href":"SVGImage.SVG.Filters.html","topicHref":"SVGImage.SVG.Filters.html","topicUid":"SVGImage.SVG.Filters","items":[{"name":"Filter","href":"SVGImage.SVG.Filters.Filter.html","topicHref":"SVGImage.SVG.Filters.Filter.html","topicUid":"SVGImage.SVG.Filters.Filter"},{"name":"FilterBaseFe","href":"SVGImage.SVG.Filters.FilterBaseFe.html","topicHref":"SVGImage.SVG.Filters.FilterBaseFe.html","topicUid":"SVGImage.SVG.Filters.FilterBaseFe"},{"name":"FilterFeGaussianBlur","href":"SVGImage.SVG.Filters.FilterFeGaussianBlur.html","topicHref":"SVGImage.SVG.Filters.FilterFeGaussianBlur.html","topicUid":"SVGImage.SVG.Filters.FilterFeGaussianBlur"}]},{"name":"SVGImage.SVG.PaintServers","href":"SVGImage.SVG.PaintServers.html","topicHref":"SVGImage.SVG.PaintServers.html","topicUid":"SVGImage.SVG.PaintServers","items":[{"name":"CurrentColorPaintServer","href":"SVGImage.SVG.PaintServers.CurrentColorPaintServer.html","topicHref":"SVGImage.SVG.PaintServers.CurrentColorPaintServer.html","topicUid":"SVGImage.SVG.PaintServers.CurrentColorPaintServer"},{"name":"GradientColorPaintServer","href":"SVGImage.SVG.PaintServers.GradientColorPaintServer.html","topicHref":"SVGImage.SVG.PaintServers.GradientColorPaintServer.html","topicUid":"SVGImage.SVG.PaintServers.GradientColorPaintServer"},{"name":"InheritPaintServer","href":"SVGImage.SVG.PaintServers.InheritPaintServer.html","topicHref":"SVGImage.SVG.PaintServers.InheritPaintServer.html","topicUid":"SVGImage.SVG.PaintServers.InheritPaintServer"},{"name":"LinearGradientColorPaintServer","href":"SVGImage.SVG.PaintServers.LinearGradientColorPaintServer.html","topicHref":"SVGImage.SVG.PaintServers.LinearGradientColorPaintServer.html","topicUid":"SVGImage.SVG.PaintServers.LinearGradientColorPaintServer"},{"name":"PaintServer","href":"SVGImage.SVG.PaintServers.PaintServer.html","topicHref":"SVGImage.SVG.PaintServers.PaintServer.html","topicUid":"SVGImage.SVG.PaintServers.PaintServer"},{"name":"PaintServerManager","href":"SVGImage.SVG.PaintServers.PaintServerManager.html","topicHref":"SVGImage.SVG.PaintServers.PaintServerManager.html","topicUid":"SVGImage.SVG.PaintServers.PaintServerManager"},{"name":"PatternPaintServer","href":"SVGImage.SVG.PaintServers.PatternPaintServer.html","topicHref":"SVGImage.SVG.PaintServers.PatternPaintServer.html","topicUid":"SVGImage.SVG.PaintServers.PatternPaintServer"},{"name":"RadialGradientColorPaintServer","href":"SVGImage.SVG.PaintServers.RadialGradientColorPaintServer.html","topicHref":"SVGImage.SVG.PaintServers.RadialGradientColorPaintServer.html","topicUid":"SVGImage.SVG.PaintServers.RadialGradientColorPaintServer"},{"name":"SolidColorPaintServer","href":"SVGImage.SVG.PaintServers.SolidColorPaintServer.html","topicHref":"SVGImage.SVG.PaintServers.SolidColorPaintServer.html","topicUid":"SVGImage.SVG.PaintServers.SolidColorPaintServer"}]},{"name":"SVGImage.SVG.Shapes","href":"SVGImage.SVG.Shapes.html","topicHref":"SVGImage.SVG.Shapes.html","topicUid":"SVGImage.SVG.Shapes","items":[{"name":"CircleShape","href":"SVGImage.SVG.Shapes.CircleShape.html","topicHref":"SVGImage.SVG.Shapes.CircleShape.html","topicUid":"SVGImage.SVG.Shapes.CircleShape"},{"name":"Clip","href":"SVGImage.SVG.Shapes.Clip.html","topicHref":"SVGImage.SVG.Shapes.Clip.html","topicUid":"SVGImage.SVG.Shapes.Clip"},{"name":"EllipseShape","href":"SVGImage.SVG.Shapes.EllipseShape.html","topicHref":"SVGImage.SVG.Shapes.EllipseShape.html","topicUid":"SVGImage.SVG.Shapes.EllipseShape"},{"name":"Group","href":"SVGImage.SVG.Shapes.Group.html","topicHref":"SVGImage.SVG.Shapes.Group.html","topicUid":"SVGImage.SVG.Shapes.Group"},{"name":"ImageShape","href":"SVGImage.SVG.Shapes.ImageShape.html","topicHref":"SVGImage.SVG.Shapes.ImageShape.html","topicUid":"SVGImage.SVG.Shapes.ImageShape"},{"name":"LineShape","href":"SVGImage.SVG.Shapes.LineShape.html","topicHref":"SVGImage.SVG.Shapes.LineShape.html","topicUid":"SVGImage.SVG.Shapes.LineShape"},{"name":"PolygonShape","href":"SVGImage.SVG.Shapes.PolygonShape.html","topicHref":"SVGImage.SVG.Shapes.PolygonShape.html","topicUid":"SVGImage.SVG.Shapes.PolygonShape"},{"name":"PolylineShape","href":"SVGImage.SVG.Shapes.PolylineShape.html","topicHref":"SVGImage.SVG.Shapes.PolylineShape.html","topicUid":"SVGImage.SVG.Shapes.PolylineShape"},{"name":"RectangleShape","href":"SVGImage.SVG.Shapes.RectangleShape.html","topicHref":"SVGImage.SVG.Shapes.RectangleShape.html","topicUid":"SVGImage.SVG.Shapes.RectangleShape"},{"name":"Shape","href":"SVGImage.SVG.Shapes.Shape.html","topicHref":"SVGImage.SVG.Shapes.Shape.html","topicUid":"SVGImage.SVG.Shapes.Shape"},{"name":"UseShape","href":"SVGImage.SVG.Shapes.UseShape.html","topicHref":"SVGImage.SVG.Shapes.UseShape.html","topicUid":"SVGImage.SVG.Shapes.UseShape"}]}],"memberLayout":"SamePage"} diff --git a/articles/intro.html b/articles/intro.html new file mode 100644 index 0000000..8e53785 --- /dev/null +++ b/articles/intro.html @@ -0,0 +1,146 @@ + + + + + Introduction | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+

Introduction

+ +

SVG (Scalable Vector Graphic) is an XML based graphic format.

+

This little project started out as a simple SVG to XAML converter. I looked at some simple SVG files and noticed +the similarity to XAML defined graphic, and decided to write a converter. However, I soon realized that SVG is a +very complex format, and at the same time, I found no good reason for converting to XAML just to show the image +on the screen, so instead, I started working on the SVG, SVGRender and the SVGImage classes.

+
    +
  • The SVG class is the class that reads and parses the XML file.
  • +
  • SVGRender is the class that creates the WPF Drawing object based on the information from the SVG class.
  • +
  • SVGImage is the image control. The image control can either +
      +
    • load the image from a filename SetImage(filename)
    • +
    • or by setting the Drawing object through SetImage(Drawing), +which allows multiple controls to share the same drawing instance.
    • +
    +
  • +
+

The control only has a couple of properties, SizeType and ImageSource.

+
    +
  • SizeType - controls how the image is stretched to fill the control +
      +
    • None: The image is not scaled. The image location is translated so the top left corner of the image bounding box is moved to the top left corner of the image control.
    • +
    • ContentToSizeNoStretch: The image is scaled to fit the control without any stretching. Either X or Y direction will be scaled to fill the entire width or height.
    • +
    • ContentToSizeStretch: The image will be stretched to fill the entire width and height.
    • +
    • SizeToContent: The control will be resized to fit the un-scaled image. If the image is larger than the max size for the control, the control is set to max size and the image is scaled.
    • +
    • ViewBoxToSizeNoStretch: Not the content of the image but its viewbox is scaled to fit the control without any stretching.Either X or Y direction will be scaled to fill the entire width or height.
    • +
    +
  • +
+

For None and ContentToSizeNoStretch, the Horizontal/VerticalContentAlignment properties can be used to position the image within the control.

+
    +
  • ImageSource - This property is the same as SetImage(drawing), and is exposed to allow for the source to be set through binding.
  • +
+ +
+ + + + + +
+ +
+ +
+
+ +
+ + + + diff --git a/articles/license.html b/articles/license.html new file mode 100644 index 0000000..f693081 --- /dev/null +++ b/articles/license.html @@ -0,0 +1,131 @@ + + + + + The MIT License (MIT) | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+

The MIT License (MIT)

+ +

Copyright (c) 2020-2023 PropertyTools and DotNetProjects 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/articles/toc.html b/articles/toc.html new file mode 100644 index 0000000..1b59f18 --- /dev/null +++ b/articles/toc.html @@ -0,0 +1,25 @@ + +
+
+
+
+ + + +
+
+
+
+ + +
+
+
+
diff --git a/articles/toc.json b/articles/toc.json new file mode 100644 index 0000000..bffde92 --- /dev/null +++ b/articles/toc.json @@ -0,0 +1,2 @@ + +{"items":[{"name":"Introduction","href":"intro.html","topicHref":"intro.html"},{"name":"License","href":"license.html","topicHref":"license.html"}]} diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..71570f61efd250abdc3bffd77a96c6986109bb85 GIT binary patch literal 99678 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 IhS>=GA3>?ZjsO4v literal 0 HcmV?d00001 diff --git a/images/dotnetprojects.png b/images/dotnetprojects.png new file mode 100644 index 0000000000000000000000000000000000000000..ba4d5539464e83a02fe09eb1a8cd2e041b02ba9f GIT binary patch literal 3367 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 z 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%0A3bSvj)`^^&OaWetpNU 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..97a8220 --- /dev/null +++ b/index.html @@ -0,0 +1,138 @@ + + + + + SVGImage | SVGImage Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+

SVGImage

+ +

This is an SVG Image View Control for WPF applications.

+

Initially forked from: SVGImage Control - CodeProject Article

+

Besides the bug fixes, new features are added including the following:

+
    +
  • Mask/Clip support
  • +
  • Support of styles.
  • +
  • Simple Animation support.
  • +
+

Framework support

+

The SVGImage control library targets the following frameworks

+
    +
  • .NET Framework, Version 4.0
  • +
  • .NET Framework, Version 4.5
  • +
  • .NET Framework, Version 4.6
  • +
  • .NET Framework, Version 4.7
  • +
  • .NET Framework, Version 4.8
  • +
  • .NET Core, Version 3.1
  • +
  • .NET 6 ~ 7
  • +
+

License

+

The SVGImage control library is relicensed under MIT License, +with permission from the original author.

+

Sample Application

+

+ +
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+

© 2020 - 2023 DotNetProjects

Made with DocFX

+
+
+
+ + diff --git a/index.json b/index.json new file mode 100644 index 0000000..44ede09 --- /dev/null +++ b/index.json @@ -0,0 +1,312 @@ +{ + "Readme.html": { + "href": "Readme.html", + "title": "SVGImage | SVGImage Documentation", + "keywords": "SVGImage This is an SVG Image View Control for WPF applications. Initially forked from: SVGImage Control - CodeProject Article Besides the bug fixes, new features are added including the following: Mask/Clip support Support of styles. Simple Animation support. Documentations For the User Manual and API References see Documentation. Framework support The SVGImage control library targets the following frameworks .NET Framework, Version 4.0 .NET Framework, Version 4.5 .NET Framework, Version 4.6 .NET Framework, Version 4.7 .NET Framework, Version 4.8 .NET Core, Version 3.1 .NET 6 ~ 7 License The SVGImage control library is relicensed under MIT License, with permission from the original author." + }, + "api/SVGImage.SVG.Animation.Animate.html": { + "href": "api/SVGImage.SVG.Animation.Animate.html", + "title": "Class Animate | SVGImage Documentation", + "keywords": "Class Animate Namespace SVGImage.SVG.Animation Assembly DotNetProjects.SVGImage.dll public sealed class Animate : AnimationBase Inheritance object ClipArtElement Shape AnimationBase Animate Inherited Members AnimationBase.Duration Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors Animate(SVG, XmlNode, Shape) public Animate(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape Properties AttributeName public string AttributeName { get; set; } Property Value string From public string From { get; set; } Property Value string RepeatType public string RepeatType { get; set; } Property Value string To public string To { get; set; } Property Value string Values public string Values { get; set; } Property Value string hRef public string hRef { get; set; } Property Value string" + }, + "api/SVGImage.SVG.Animation.AnimateColor.html": { + "href": "api/SVGImage.SVG.Animation.AnimateColor.html", + "title": "Class AnimateColor | SVGImage Documentation", + "keywords": "Class AnimateColor Namespace SVGImage.SVG.Animation Assembly DotNetProjects.SVGImage.dll public sealed class AnimateColor : AnimationBase Inheritance object ClipArtElement Shape AnimationBase AnimateColor Inherited Members AnimationBase.Duration Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors AnimateColor(SVG, XmlNode, Shape) public AnimateColor(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape" + }, + "api/SVGImage.SVG.Animation.AnimateMotion.html": { + "href": "api/SVGImage.SVG.Animation.AnimateMotion.html", + "title": "Class AnimateMotion | SVGImage Documentation", + "keywords": "Class AnimateMotion Namespace SVGImage.SVG.Animation Assembly DotNetProjects.SVGImage.dll public sealed class AnimateMotion : AnimationBase Inheritance object ClipArtElement Shape AnimationBase AnimateMotion Inherited Members AnimationBase.Duration Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors AnimateMotion(SVG, XmlNode, Shape) public AnimateMotion(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape" + }, + "api/SVGImage.SVG.Animation.AnimateTransform.html": { + "href": "api/SVGImage.SVG.Animation.AnimateTransform.html", + "title": "Class AnimateTransform | SVGImage Documentation", + "keywords": "Class AnimateTransform Namespace SVGImage.SVG.Animation Assembly DotNetProjects.SVGImage.dll public sealed class AnimateTransform : AnimationBase Inheritance object ClipArtElement Shape AnimationBase AnimateTransform Inherited Members AnimationBase.Duration Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors AnimateTransform(SVG, XmlNode, Shape) public AnimateTransform(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape Properties AttributeName public string AttributeName { get; set; } Property Value string From public string From { get; set; } Property Value string RepeatType public string RepeatType { get; set; } Property Value string To public string To { get; set; } Property Value string Type public AnimateTransformType Type { get; set; } Property Value AnimateTransformType Values public string Values { get; set; } Property Value string" + }, + "api/SVGImage.SVG.Animation.AnimateTransformType.html": { + "href": "api/SVGImage.SVG.Animation.AnimateTransformType.html", + "title": "Enum AnimateTransformType | SVGImage Documentation", + "keywords": "Enum AnimateTransformType Namespace SVGImage.SVG.Animation Assembly DotNetProjects.SVGImage.dll public enum AnimateTransformType Fields Rotate = 2 Scale = 1 SkewX = 3 SkewY = 4 Translate = 0" + }, + "api/SVGImage.SVG.Animation.AnimationBase.html": { + "href": "api/SVGImage.SVG.Animation.AnimationBase.html", + "title": "Class AnimationBase | SVGImage Documentation", + "keywords": "Class AnimationBase Namespace SVGImage.SVG.Animation Assembly DotNetProjects.SVGImage.dll public abstract class AnimationBase : Shape Inheritance object ClipArtElement Shape AnimationBase Derived Animate AnimateColor AnimateMotion AnimateTransform Inherited Members Shape.m_fill Shape.m_stroke Shape.m_textstyle Shape.m_localStyle Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ParseAtStart(SVG, XmlNode) Shape.ParseLocalStyle(SVG) Shape.Parse(SVG, string, string) Shape.GetFill(SVG) Shape.GetTextStyle(SVG) Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors AnimationBase(SVG, XmlNode, Shape) protected AnimationBase(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape Properties Duration public TimeSpan Duration { get; set; } Property Value TimeSpan" + }, + "api/SVGImage.SVG.Animation.html": { + "href": "api/SVGImage.SVG.Animation.html", + "title": "Namespace SVGImage.SVG.Animation | SVGImage Documentation", + "keywords": "Namespace SVGImage.SVG.Animation Classes Animate AnimateColor AnimateMotion AnimateTransform AnimationBase Enums AnimateTransformType" + }, + "api/SVGImage.SVG.ClipArtElement.html": { + "href": "api/SVGImage.SVG.ClipArtElement.html", + "title": "Class ClipArtElement | SVGImage Documentation", + "keywords": "Class ClipArtElement Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public abstract class ClipArtElement Inheritance object ClipArtElement Derived Shape Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors ClipArtElement(XmlNode) protected ClipArtElement(XmlNode node) Parameters node XmlNode Properties Id public string Id { get; } Property Value string" + }, + "api/SVGImage.SVG.FileLoaders.FileSystemLoader.html": { + "href": "api/SVGImage.SVG.FileLoaders.FileSystemLoader.html", + "title": "Class FileSystemLoader | SVGImage Documentation", + "keywords": "Class FileSystemLoader Namespace SVGImage.SVG.FileLoaders Assembly DotNetProjects.SVGImage.dll public sealed class FileSystemLoader : IExternalFileLoader Inheritance object FileSystemLoader Implements IExternalFileLoader Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Properties Instance public static FileSystemLoader Instance { get; } Property Value FileSystemLoader Methods LoadFile(string, string) public Stream LoadFile(string hRef, string svgFilename) Parameters hRef string svgFilename string Returns Stream" + }, + "api/SVGImage.SVG.FileLoaders.IExternalFileLoader.html": { + "href": "api/SVGImage.SVG.FileLoaders.IExternalFileLoader.html", + "title": "Interface IExternalFileLoader | SVGImage Documentation", + "keywords": "Interface IExternalFileLoader Namespace SVGImage.SVG.FileLoaders Assembly DotNetProjects.SVGImage.dll public interface IExternalFileLoader Methods LoadFile(string, string) Stream LoadFile(string hRef, string svgFilename) Parameters hRef string svgFilename string Returns Stream" + }, + "api/SVGImage.SVG.FileLoaders.html": { + "href": "api/SVGImage.SVG.FileLoaders.html", + "title": "Namespace SVGImage.SVG.FileLoaders | SVGImage Documentation", + "keywords": "Namespace SVGImage.SVG.FileLoaders Classes FileSystemLoader Interfaces IExternalFileLoader" + }, + "api/SVGImage.SVG.Fill.eFillRule.html": { + "href": "api/SVGImage.SVG.Fill.eFillRule.html", + "title": "Enum Fill.eFillRule | SVGImage Documentation", + "keywords": "Enum Fill.eFillRule Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public enum Fill.eFillRule Fields evenodd = 1 nonzero = 0" + }, + "api/SVGImage.SVG.Fill.html": { + "href": "api/SVGImage.SVG.Fill.html", + "title": "Class Fill | SVGImage Documentation", + "keywords": "Class Fill Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public sealed class Fill Inheritance object Fill Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors Fill(SVG) public Fill(SVG svg) Parameters svg SVG Properties FillRule public Fill.eFillRule FillRule { get; set; } Property Value Fill.eFillRule Opacity public double Opacity { get; set; } Property Value double PaintServerKey public string PaintServerKey { get; set; } Property Value string Methods FillBrush(SVG, SVGRender, Shape, double, Rect) public Brush FillBrush(SVG svg, SVGRender svgRender, Shape shape, double elementOpacity, Rect bounds) Parameters svg SVG svgRender SVGRender shape Shape elementOpacity double bounds Rect Returns Brush IsEmpty(SVG) public bool IsEmpty(SVG svg) Parameters svg SVG Returns bool" + }, + "api/SVGImage.SVG.Filters.Filter.html": { + "href": "api/SVGImage.SVG.Filters.Filter.html", + "title": "Class Filter | SVGImage Documentation", + "keywords": "Class Filter Namespace SVGImage.SVG.Filters Assembly DotNetProjects.SVGImage.dll public sealed class Filter : Group Inheritance object ClipArtElement Shape Group Filter Inherited Members Group.Elements Group.IsSwitch Group.AddToList(SVG, List, XmlNode, Shape) Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors Filter(SVG, XmlNode, Shape) public Filter(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape Methods GetBitmapEffect() public BitmapEffect GetBitmapEffect() Returns BitmapEffect" + }, + "api/SVGImage.SVG.Filters.FilterBaseFe.html": { + "href": "api/SVGImage.SVG.Filters.FilterBaseFe.html", + "title": "Class FilterBaseFe | SVGImage Documentation", + "keywords": "Class FilterBaseFe Namespace SVGImage.SVG.Filters Assembly DotNetProjects.SVGImage.dll public abstract class FilterBaseFe : Shape Inheritance object ClipArtElement Shape FilterBaseFe Derived FilterFeGaussianBlur Inherited Members Shape.m_fill Shape.m_stroke Shape.m_textstyle Shape.m_localStyle Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ParseAtStart(SVG, XmlNode) Shape.ParseLocalStyle(SVG) Shape.Parse(SVG, string, string) Shape.GetFill(SVG) Shape.GetTextStyle(SVG) Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors FilterBaseFe(SVG, XmlNode, Shape) public FilterBaseFe(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape Methods GetBitmapEffect() public abstract BitmapEffect GetBitmapEffect() Returns BitmapEffect" + }, + "api/SVGImage.SVG.Filters.FilterFeGaussianBlur.html": { + "href": "api/SVGImage.SVG.Filters.FilterFeGaussianBlur.html", + "title": "Class FilterFeGaussianBlur | SVGImage Documentation", + "keywords": "Class FilterFeGaussianBlur Namespace SVGImage.SVG.Filters Assembly DotNetProjects.SVGImage.dll public class FilterFeGaussianBlur : FilterBaseFe Inheritance object ClipArtElement Shape FilterBaseFe FilterFeGaussianBlur Inherited Members Shape.m_fill Shape.m_stroke Shape.m_textstyle Shape.m_localStyle Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ParseAtStart(SVG, XmlNode) Shape.ParseLocalStyle(SVG) Shape.Parse(SVG, string, string) Shape.GetFill(SVG) Shape.GetTextStyle(SVG) Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors FilterFeGaussianBlur(SVG, XmlNode, Shape) public FilterFeGaussianBlur(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape Properties In public string In { get; set; } Property Value string StdDeviationX public double StdDeviationX { get; set; } Property Value double StdDeviationY public double StdDeviationY { get; set; } Property Value double Methods GetBitmapEffect() public override BitmapEffect GetBitmapEffect() Returns BitmapEffect" + }, + "api/SVGImage.SVG.Filters.html": { + "href": "api/SVGImage.SVG.Filters.html", + "title": "Namespace SVGImage.SVG.Filters | SVGImage Documentation", + "keywords": "Namespace SVGImage.SVG.Filters Classes Filter FilterBaseFe FilterFeGaussianBlur" + }, + "api/SVGImage.SVG.PaintServers.CurrentColorPaintServer.html": { + "href": "api/SVGImage.SVG.PaintServers.CurrentColorPaintServer.html", + "title": "Class CurrentColorPaintServer | SVGImage Documentation", + "keywords": "Class CurrentColorPaintServer Namespace SVGImage.SVG.PaintServers Assembly DotNetProjects.SVGImage.dll public sealed class CurrentColorPaintServer : PaintServer Inheritance object PaintServer CurrentColorPaintServer Inherited Members PaintServer.Owner PaintServer.GetBrush() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors CurrentColorPaintServer(PaintServerManager) public CurrentColorPaintServer(PaintServerManager owner) Parameters owner PaintServerManager Methods GetBrush(double, SVG, SVGRender, Rect) public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds) Parameters opacity double svg SVG svgRender SVGRender bounds Rect Returns Brush" + }, + "api/SVGImage.SVG.PaintServers.GradientColorPaintServer.html": { + "href": "api/SVGImage.SVG.PaintServers.GradientColorPaintServer.html", + "title": "Class GradientColorPaintServer | SVGImage Documentation", + "keywords": "Class GradientColorPaintServer Namespace SVGImage.SVG.PaintServers Assembly DotNetProjects.SVGImage.dll public abstract class GradientColorPaintServer : PaintServer Inheritance object PaintServer GradientColorPaintServer Derived LinearGradientColorPaintServer RadialGradientColorPaintServer Inherited Members PaintServer.Owner PaintServer.Brush PaintServer.GetBrush(double, SVG, SVGRender, Rect) PaintServer.GetBrush() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors GradientColorPaintServer(PaintServerManager) protected GradientColorPaintServer(PaintServerManager owner) Parameters owner PaintServerManager GradientColorPaintServer(PaintServerManager, XmlNode) protected GradientColorPaintServer(PaintServerManager owner, XmlNode node) Parameters owner PaintServerManager node XmlNode Properties GradientUnits public string GradientUnits { get; } Property Value string Stops public IList Stops { get; } Property Value IList Transform public Transform Transform { get; protected set; } Property Value Transform" + }, + "api/SVGImage.SVG.PaintServers.InheritPaintServer.html": { + "href": "api/SVGImage.SVG.PaintServers.InheritPaintServer.html", + "title": "Class InheritPaintServer | SVGImage Documentation", + "keywords": "Class InheritPaintServer Namespace SVGImage.SVG.PaintServers Assembly DotNetProjects.SVGImage.dll public sealed class InheritPaintServer : PaintServer Inheritance object PaintServer InheritPaintServer Inherited Members PaintServer.Owner PaintServer.GetBrush() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors InheritPaintServer(PaintServerManager) public InheritPaintServer(PaintServerManager owner) Parameters owner PaintServerManager Methods GetBrush(double, SVG, SVGRender, Rect) public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds) Parameters opacity double svg SVG svgRender SVGRender bounds Rect Returns Brush" + }, + "api/SVGImage.SVG.PaintServers.LinearGradientColorPaintServer.html": { + "href": "api/SVGImage.SVG.PaintServers.LinearGradientColorPaintServer.html", + "title": "Class LinearGradientColorPaintServer | SVGImage Documentation", + "keywords": "Class LinearGradientColorPaintServer Namespace SVGImage.SVG.PaintServers Assembly DotNetProjects.SVGImage.dll public sealed class LinearGradientColorPaintServer : GradientColorPaintServer Inheritance object PaintServer GradientColorPaintServer LinearGradientColorPaintServer Inherited Members GradientColorPaintServer.Stops GradientColorPaintServer.Transform GradientColorPaintServer.GradientUnits PaintServer.Owner PaintServer.GetBrush() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors LinearGradientColorPaintServer(PaintServerManager, Brush) public LinearGradientColorPaintServer(PaintServerManager owner, Brush newBrush) Parameters owner PaintServerManager newBrush Brush LinearGradientColorPaintServer(PaintServerManager, XmlNode) public LinearGradientColorPaintServer(PaintServerManager owner, XmlNode node) Parameters owner PaintServerManager node XmlNode Properties X1 public double X1 { get; } Property Value double X2 public double X2 { get; } Property Value double Y1 public double Y1 { get; } Property Value double Y2 public double Y2 { get; } Property Value double Methods GetBrush(double, SVG, SVGRender, Rect) public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds) Parameters opacity double svg SVG svgRender SVGRender bounds Rect Returns Brush" + }, + "api/SVGImage.SVG.PaintServers.PaintServer.html": { + "href": "api/SVGImage.SVG.PaintServers.PaintServer.html", + "title": "Class PaintServer | SVGImage Documentation", + "keywords": "Class PaintServer Namespace SVGImage.SVG.PaintServers Assembly DotNetProjects.SVGImage.dll public class PaintServer Inheritance object PaintServer Derived CurrentColorPaintServer GradientColorPaintServer InheritPaintServer PatternPaintServer SolidColorPaintServer Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors PaintServer(PaintServerManager) public PaintServer(PaintServerManager owner) Parameters owner PaintServerManager PaintServer(PaintServerManager, Brush) public PaintServer(PaintServerManager owner, Brush newBrush) Parameters owner PaintServerManager newBrush Brush Fields Brush protected Brush Brush Field Value Brush Properties Owner public PaintServerManager Owner { get; } Property Value PaintServerManager Methods GetBrush() public Brush GetBrush() Returns Brush GetBrush(double, SVG, SVGRender, Rect) public virtual Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds) Parameters opacity double svg SVG svgRender SVGRender bounds Rect Returns Brush" + }, + "api/SVGImage.SVG.PaintServers.PaintServerManager.html": { + "href": "api/SVGImage.SVG.PaintServers.PaintServerManager.html", + "title": "Class PaintServerManager | SVGImage Documentation", + "keywords": "Class PaintServerManager Namespace SVGImage.SVG.PaintServers Assembly DotNetProjects.SVGImage.dll public sealed class PaintServerManager Inheritance object PaintServerManager Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Methods AddServer(string, PaintServer) public void AddServer(string key, PaintServer server) Parameters key string server PaintServer ContainsServer(string) public bool ContainsServer(string serverKey) Parameters serverKey string Returns bool Create(SVG, XmlNode) public string Create(SVG svg, XmlNode node) Parameters svg SVG node XmlNode Returns string CreateServerFromBrush(string, Brush) public void CreateServerFromBrush(string key, Brush customBrush) Parameters key string customBrush Brush GetServer(string) public PaintServer GetServer(string serverKey) Parameters serverKey string Returns PaintServer GetServers() public Dictionary GetServers() Returns Dictionary KnownColor(string) public static Color KnownColor(string value) Parameters value string Returns Color Parse(string) public string Parse(string value) Parameters value string Returns string ParseHexColor(string) public static Color ParseHexColor(string value) Parameters value string Returns Color" + }, + "api/SVGImage.SVG.PaintServers.PatternPaintServer.html": { + "href": "api/SVGImage.SVG.PaintServers.PatternPaintServer.html", + "title": "Class PatternPaintServer | SVGImage Documentation", + "keywords": "Class PatternPaintServer Namespace SVGImage.SVG.PaintServers Assembly DotNetProjects.SVGImage.dll public sealed class PatternPaintServer : PaintServer Inheritance object PaintServer PatternPaintServer Inherited Members PaintServer.Owner PaintServer.GetBrush() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors PatternPaintServer(PaintServerManager, SVG, XmlNode) public PatternPaintServer(PaintServerManager owner, SVG svg, XmlNode node) Parameters owner PaintServerManager svg SVG node XmlNode PatternPaintServer(PaintServerManager, Brush) public PatternPaintServer(PaintServerManager owner, Brush newBrush) Parameters owner PaintServerManager newBrush Brush Properties Height public double Height { get; } Property Value double PatternTransform public Transform PatternTransform { get; } Property Value Transform PatternUnits public string PatternUnits { get; } Property Value string Width public double Width { get; } Property Value double X public double X { get; } Property Value double Y public double Y { get; } Property Value double Methods GetBrush(double, SVG, SVGRender, Rect) public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds) Parameters opacity double svg SVG svgRender SVGRender bounds Rect Returns Brush" + }, + "api/SVGImage.SVG.PaintServers.RadialGradientColorPaintServer.html": { + "href": "api/SVGImage.SVG.PaintServers.RadialGradientColorPaintServer.html", + "title": "Class RadialGradientColorPaintServer | SVGImage Documentation", + "keywords": "Class RadialGradientColorPaintServer Namespace SVGImage.SVG.PaintServers Assembly DotNetProjects.SVGImage.dll public sealed class RadialGradientColorPaintServer : GradientColorPaintServer Inheritance object PaintServer GradientColorPaintServer RadialGradientColorPaintServer Inherited Members GradientColorPaintServer.Stops GradientColorPaintServer.Transform GradientColorPaintServer.GradientUnits PaintServer.Owner PaintServer.GetBrush() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors RadialGradientColorPaintServer(PaintServerManager, Brush) public RadialGradientColorPaintServer(PaintServerManager owner, Brush newBrush) Parameters owner PaintServerManager newBrush Brush RadialGradientColorPaintServer(PaintServerManager, XmlNode) public RadialGradientColorPaintServer(PaintServerManager owner, XmlNode node) Parameters owner PaintServerManager node XmlNode Properties CX public double CX { get; } Property Value double CY public double CY { get; } Property Value double FX public double FX { get; } Property Value double FY public double FY { get; } Property Value double R public double R { get; } Property Value double Methods GetBrush(double, SVG, SVGRender, Rect) public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds) Parameters opacity double svg SVG svgRender SVGRender bounds Rect Returns Brush" + }, + "api/SVGImage.SVG.PaintServers.SolidColorPaintServer.html": { + "href": "api/SVGImage.SVG.PaintServers.SolidColorPaintServer.html", + "title": "Class SolidColorPaintServer | SVGImage Documentation", + "keywords": "Class SolidColorPaintServer Namespace SVGImage.SVG.PaintServers Assembly DotNetProjects.SVGImage.dll public sealed class SolidColorPaintServer : PaintServer Inheritance object PaintServer SolidColorPaintServer Inherited Members PaintServer.Owner PaintServer.GetBrush() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors SolidColorPaintServer(PaintServerManager, Brush) public SolidColorPaintServer(PaintServerManager owner, Brush newBrush) Parameters owner PaintServerManager newBrush Brush SolidColorPaintServer(PaintServerManager, Color) public SolidColorPaintServer(PaintServerManager owner, Color c) Parameters owner PaintServerManager c Color Properties Color public Color Color { get; set; } Property Value Color Methods GetBrush(double, SVG, SVGRender, Rect) public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds) Parameters opacity double svg SVG svgRender SVGRender bounds Rect Returns Brush" + }, + "api/SVGImage.SVG.PaintServers.html": { + "href": "api/SVGImage.SVG.PaintServers.html", + "title": "Namespace SVGImage.SVG.PaintServers | SVGImage Documentation", + "keywords": "Namespace SVGImage.SVG.PaintServers Classes CurrentColorPaintServer GradientColorPaintServer InheritPaintServer LinearGradientColorPaintServer PaintServer PaintServerManager PatternPaintServer RadialGradientColorPaintServer SolidColorPaintServer" + }, + "api/SVGImage.SVG.PathShape.html": { + "href": "api/SVGImage.SVG.PathShape.html", + "title": "Class PathShape | SVGImage Documentation", + "keywords": "Class PathShape Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public sealed class PathShape : Shape Inheritance object ClipArtElement Shape PathShape Inherited Members Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors PathShape(SVG, XmlNode, Shape) public PathShape(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape Properties ClosePath public bool ClosePath { get; } Property Value bool Data public string Data { get; } Property Value string Fill public override Fill Fill { get; } Property Value Fill" + }, + "api/SVGImage.SVG.SVG.html": { + "href": "api/SVGImage.SVG.SVG.html", + "title": "Class SVG | SVGImage Documentation", + "keywords": "Class SVG Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll This is the class that reads and parses the XML file. public class SVG Inheritance object SVG Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors SVG() public SVG() SVG(IExternalFileLoader) public SVG(IExternalFileLoader externalFileLoader) Parameters externalFileLoader IExternalFileLoader SVG(Stream) public SVG(Stream stream) Parameters stream Stream SVG(Stream, IExternalFileLoader) public SVG(Stream stream, IExternalFileLoader externalFileLoader) Parameters stream Stream externalFileLoader IExternalFileLoader SVG(string) public SVG(string filename) Parameters filename string SVG(string, IExternalFileLoader) public SVG(string filename, IExternalFileLoader externalFileLoader) Parameters filename string externalFileLoader IExternalFileLoader SVG(XmlNode, IExternalFileLoader) public SVG(XmlNode svgTag, IExternalFileLoader externalFileLoader) Parameters svgTag XmlNode externalFileLoader IExternalFileLoader Properties CustomBrushes public Dictionary CustomBrushes { get; set; } Property Value Dictionary Elements public IList Elements { get; } Property Value IList ExternalFileLoader public IExternalFileLoader ExternalFileLoader { get; set; } Property Value IExternalFileLoader Filename public string Filename { get; } Property Value string PaintServers public PaintServerManager PaintServers { get; } Property Value PaintServerManager Size public Size Size { get; set; } Property Value Size ViewBox public Rect? ViewBox { get; set; } Property Value Rect? Methods AddShape(string, Shape) public void AddShape(string id, Shape shape) Parameters id string shape Shape GetShape(string) public Shape GetShape(string id) Parameters id string Returns Shape Load(Stream) public void Load(Stream stream) Parameters stream Stream Load(TextReader) public void Load(TextReader txtReader) Parameters txtReader TextReader Load(string) public void Load(string filePath) Parameters filePath string Load(Uri) public void Load(Uri fileUri) Parameters fileUri Uri Load(XmlReader) public void Load(XmlReader xmlReader) Parameters xmlReader XmlReader LoadXml(string) public void LoadXml(string fileXml) Parameters fileXml string" + }, + "api/SVGImage.SVG.SVGImage.eSizeType.html": { + "href": "api/SVGImage.SVG.SVGImage.eSizeType.html", + "title": "Enum SVGImage.eSizeType | SVGImage Documentation", + "keywords": "Enum SVGImage.eSizeType Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll This controls how the image is stretched to fill the control, public enum SVGImage.eSizeType Fields ContentToSizeNoStretch = 1 The image is scaled to fit the control without any stretching. Either X or Y direction will be scaled to fill the entire width or height. ContentToSizeStretch = 2 The image will be stretched to fill the entire width and height. None = 0 The image is not scaled. The image location is translated so the top left corner of the image bounding box is moved to the top left corner of the image control. SizeToContent = 3 The control will be resized to fit the un-scaled image. If the image is larger than the maximum size for the control, the control is set to maximum size and the image is scaled. ViewBoxToSizeNoStretch = 4 Not the content of the image but its viewbox is scaled to fit the control without any stretching. Either X or Y direction will be scaled to fill the entire width or height." + }, + "api/SVGImage.SVG.SVGImage.html": { + "href": "api/SVGImage.SVG.SVGImage.html", + "title": "Class SVGImage | SVGImage Documentation", + "keywords": "Class SVGImage Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll This is the SVG image view control. The image control can either load the image from a file SetImage(string) or by setting the Drawing object through SetImage(Drawing), which allows multiple controls to share the same drawing instance. public class SVGImage : Control, IAnimatable, IFrameworkInputElement, IInputElement, ISupportInitialize, IQueryAmbient, IUriContext Inheritance object DispatcherObject DependencyObject Visual UIElement FrameworkElement Control SVGImage Implements IAnimatable IFrameworkInputElement IInputElement ISupportInitialize IQueryAmbient IUriContext Inherited Members Control.BorderBrushProperty Control.BorderThicknessProperty Control.BackgroundProperty Control.ForegroundProperty Control.FontFamilyProperty Control.FontSizeProperty Control.FontStretchProperty Control.FontStyleProperty Control.FontWeightProperty Control.HorizontalContentAlignmentProperty Control.VerticalContentAlignmentProperty Control.TabIndexProperty Control.IsTabStopProperty Control.PaddingProperty Control.TemplateProperty Control.PreviewMouseDoubleClickEvent Control.MouseDoubleClickEvent Control.OnTemplateChanged(ControlTemplate, ControlTemplate) Control.ToString() Control.OnPreviewMouseDoubleClick(MouseButtonEventArgs) Control.OnMouseDoubleClick(MouseButtonEventArgs) Control.BorderBrush Control.BorderThickness Control.Background Control.Foreground Control.FontFamily Control.FontSize Control.FontStretch Control.FontStyle Control.FontWeight Control.HorizontalContentAlignment Control.VerticalContentAlignment Control.TabIndex Control.IsTabStop Control.Padding Control.Template Control.HandlesScrolling Control.PreviewMouseDoubleClick Control.MouseDoubleClick FrameworkElement.StyleProperty FrameworkElement.OverridesDefaultStyleProperty FrameworkElement.UseLayoutRoundingProperty FrameworkElement.DefaultStyleKeyProperty FrameworkElement.DataContextProperty FrameworkElement.BindingGroupProperty FrameworkElement.LanguageProperty FrameworkElement.NameProperty FrameworkElement.TagProperty FrameworkElement.InputScopeProperty FrameworkElement.RequestBringIntoViewEvent FrameworkElement.SizeChangedEvent FrameworkElement.ActualWidthProperty FrameworkElement.ActualHeightProperty FrameworkElement.LayoutTransformProperty FrameworkElement.WidthProperty FrameworkElement.MinWidthProperty FrameworkElement.MaxWidthProperty FrameworkElement.HeightProperty FrameworkElement.MinHeightProperty FrameworkElement.MaxHeightProperty FrameworkElement.FlowDirectionProperty FrameworkElement.MarginProperty FrameworkElement.HorizontalAlignmentProperty FrameworkElement.VerticalAlignmentProperty FrameworkElement.FocusVisualStyleProperty FrameworkElement.CursorProperty FrameworkElement.ForceCursorProperty FrameworkElement.LoadedEvent FrameworkElement.UnloadedEvent FrameworkElement.ToolTipProperty FrameworkElement.ContextMenuProperty FrameworkElement.ToolTipOpeningEvent FrameworkElement.ToolTipClosingEvent FrameworkElement.ContextMenuOpeningEvent FrameworkElement.ContextMenuClosingEvent FrameworkElement.OnStyleChanged(Style, Style) FrameworkElement.ParentLayoutInvalidated(UIElement) FrameworkElement.ApplyTemplate() FrameworkElement.OnApplyTemplate() FrameworkElement.BeginStoryboard(Storyboard) FrameworkElement.BeginStoryboard(Storyboard, HandoffBehavior) FrameworkElement.BeginStoryboard(Storyboard, HandoffBehavior, bool) FrameworkElement.GetVisualChild(int) FrameworkElement.GetTemplateChild(string) FrameworkElement.FindResource(object) FrameworkElement.TryFindResource(object) FrameworkElement.SetResourceReference(DependencyProperty, object) FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs) FrameworkElement.OnVisualParentChanged(DependencyObject) FrameworkElement.GetBindingExpression(DependencyProperty) FrameworkElement.SetBinding(DependencyProperty, BindingBase) FrameworkElement.SetBinding(DependencyProperty, string) FrameworkElement.GetUIParentCore() FrameworkElement.BringIntoView() FrameworkElement.BringIntoView(Rect) FrameworkElement.GetFlowDirection(DependencyObject) FrameworkElement.SetFlowDirection(DependencyObject, FlowDirection) FrameworkElement.MeasureCore(Size) FrameworkElement.ArrangeCore(Rect) FrameworkElement.GetLayoutClip(Size) FrameworkElement.MoveFocus(TraversalRequest) FrameworkElement.PredictFocus(FocusNavigationDirection) FrameworkElement.OnGotFocus(RoutedEventArgs) FrameworkElement.BeginInit() FrameworkElement.EndInit() FrameworkElement.OnToolTipOpening(ToolTipEventArgs) FrameworkElement.OnToolTipClosing(ToolTipEventArgs) FrameworkElement.OnContextMenuOpening(ContextMenuEventArgs) FrameworkElement.OnContextMenuClosing(ContextMenuEventArgs) FrameworkElement.RegisterName(string, object) FrameworkElement.UnregisterName(string) FrameworkElement.FindName(string) FrameworkElement.AddLogicalChild(object) FrameworkElement.RemoveLogicalChild(object) FrameworkElement.Style FrameworkElement.OverridesDefaultStyle FrameworkElement.UseLayoutRounding FrameworkElement.DefaultStyleKey FrameworkElement.Triggers FrameworkElement.TemplatedParent FrameworkElement.VisualChildrenCount FrameworkElement.Resources FrameworkElement.InheritanceBehavior FrameworkElement.DataContext FrameworkElement.BindingGroup FrameworkElement.Language FrameworkElement.Name FrameworkElement.Tag FrameworkElement.InputScope FrameworkElement.ActualWidth FrameworkElement.ActualHeight FrameworkElement.LayoutTransform FrameworkElement.Width FrameworkElement.MinWidth FrameworkElement.MaxWidth FrameworkElement.Height FrameworkElement.MinHeight FrameworkElement.MaxHeight FrameworkElement.FlowDirection FrameworkElement.Margin FrameworkElement.HorizontalAlignment FrameworkElement.VerticalAlignment FrameworkElement.FocusVisualStyle FrameworkElement.Cursor FrameworkElement.ForceCursor FrameworkElement.IsInitialized FrameworkElement.IsLoaded FrameworkElement.ToolTip FrameworkElement.ContextMenu FrameworkElement.Parent FrameworkElement.LogicalChildren FrameworkElement.TargetUpdated FrameworkElement.SourceUpdated FrameworkElement.DataContextChanged FrameworkElement.RequestBringIntoView FrameworkElement.SizeChanged FrameworkElement.Initialized FrameworkElement.Loaded FrameworkElement.Unloaded FrameworkElement.ToolTipOpening FrameworkElement.ToolTipClosing FrameworkElement.ContextMenuOpening FrameworkElement.ContextMenuClosing UIElement.PreviewMouseDownEvent UIElement.MouseDownEvent UIElement.PreviewMouseUpEvent UIElement.MouseUpEvent UIElement.PreviewMouseLeftButtonDownEvent UIElement.MouseLeftButtonDownEvent UIElement.PreviewMouseLeftButtonUpEvent UIElement.MouseLeftButtonUpEvent UIElement.PreviewMouseRightButtonDownEvent UIElement.MouseRightButtonDownEvent UIElement.PreviewMouseRightButtonUpEvent UIElement.MouseRightButtonUpEvent UIElement.PreviewMouseMoveEvent UIElement.MouseMoveEvent UIElement.PreviewMouseWheelEvent UIElement.MouseWheelEvent UIElement.MouseEnterEvent UIElement.MouseLeaveEvent UIElement.GotMouseCaptureEvent UIElement.LostMouseCaptureEvent UIElement.QueryCursorEvent UIElement.PreviewStylusDownEvent UIElement.StylusDownEvent UIElement.PreviewStylusUpEvent UIElement.StylusUpEvent UIElement.PreviewStylusMoveEvent UIElement.StylusMoveEvent UIElement.PreviewStylusInAirMoveEvent UIElement.StylusInAirMoveEvent UIElement.StylusEnterEvent UIElement.StylusLeaveEvent UIElement.PreviewStylusInRangeEvent UIElement.StylusInRangeEvent UIElement.PreviewStylusOutOfRangeEvent UIElement.StylusOutOfRangeEvent UIElement.PreviewStylusSystemGestureEvent UIElement.StylusSystemGestureEvent UIElement.GotStylusCaptureEvent UIElement.LostStylusCaptureEvent UIElement.StylusButtonDownEvent UIElement.StylusButtonUpEvent UIElement.PreviewStylusButtonDownEvent UIElement.PreviewStylusButtonUpEvent UIElement.PreviewKeyDownEvent UIElement.KeyDownEvent UIElement.PreviewKeyUpEvent UIElement.KeyUpEvent UIElement.PreviewGotKeyboardFocusEvent UIElement.GotKeyboardFocusEvent UIElement.PreviewLostKeyboardFocusEvent UIElement.LostKeyboardFocusEvent UIElement.PreviewTextInputEvent UIElement.TextInputEvent UIElement.PreviewQueryContinueDragEvent UIElement.QueryContinueDragEvent UIElement.PreviewGiveFeedbackEvent UIElement.GiveFeedbackEvent UIElement.PreviewDragEnterEvent UIElement.DragEnterEvent UIElement.PreviewDragOverEvent UIElement.DragOverEvent UIElement.PreviewDragLeaveEvent UIElement.DragLeaveEvent UIElement.PreviewDropEvent UIElement.DropEvent UIElement.PreviewTouchDownEvent UIElement.TouchDownEvent UIElement.PreviewTouchMoveEvent UIElement.TouchMoveEvent UIElement.PreviewTouchUpEvent UIElement.TouchUpEvent UIElement.GotTouchCaptureEvent UIElement.LostTouchCaptureEvent UIElement.TouchEnterEvent UIElement.TouchLeaveEvent UIElement.IsMouseDirectlyOverProperty UIElement.IsMouseOverProperty UIElement.IsStylusOverProperty UIElement.IsKeyboardFocusWithinProperty UIElement.IsMouseCapturedProperty UIElement.IsMouseCaptureWithinProperty UIElement.IsStylusDirectlyOverProperty UIElement.IsStylusCapturedProperty UIElement.IsStylusCaptureWithinProperty UIElement.IsKeyboardFocusedProperty UIElement.AreAnyTouchesDirectlyOverProperty UIElement.AreAnyTouchesOverProperty UIElement.AreAnyTouchesCapturedProperty UIElement.AreAnyTouchesCapturedWithinProperty UIElement.AllowDropProperty UIElement.RenderTransformProperty UIElement.RenderTransformOriginProperty UIElement.OpacityProperty UIElement.OpacityMaskProperty UIElement.BitmapEffectProperty UIElement.EffectProperty UIElement.BitmapEffectInputProperty UIElement.CacheModeProperty UIElement.UidProperty UIElement.VisibilityProperty UIElement.ClipToBoundsProperty UIElement.ClipProperty UIElement.SnapsToDevicePixelsProperty UIElement.GotFocusEvent UIElement.LostFocusEvent UIElement.IsFocusedProperty UIElement.IsEnabledProperty UIElement.IsHitTestVisibleProperty UIElement.IsVisibleProperty UIElement.FocusableProperty UIElement.IsManipulationEnabledProperty UIElement.ManipulationStartingEvent UIElement.ManipulationStartedEvent UIElement.ManipulationDeltaEvent UIElement.ManipulationInertiaStartingEvent UIElement.ManipulationBoundaryFeedbackEvent UIElement.ManipulationCompletedEvent UIElement.ApplyAnimationClock(DependencyProperty, AnimationClock) UIElement.ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior) UIElement.BeginAnimation(DependencyProperty, AnimationTimeline) UIElement.BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior) UIElement.GetAnimationBaseValue(DependencyProperty) UIElement.RaiseEvent(RoutedEventArgs) UIElement.AddHandler(RoutedEvent, Delegate) UIElement.AddHandler(RoutedEvent, Delegate, bool) UIElement.RemoveHandler(RoutedEvent, Delegate) UIElement.AddToEventRoute(EventRoute, RoutedEventArgs) UIElement.OnPreviewMouseDown(MouseButtonEventArgs) UIElement.OnMouseDown(MouseButtonEventArgs) UIElement.OnPreviewMouseUp(MouseButtonEventArgs) UIElement.OnMouseUp(MouseButtonEventArgs) UIElement.OnPreviewMouseLeftButtonDown(MouseButtonEventArgs) UIElement.OnMouseLeftButtonDown(MouseButtonEventArgs) UIElement.OnPreviewMouseLeftButtonUp(MouseButtonEventArgs) UIElement.OnMouseLeftButtonUp(MouseButtonEventArgs) UIElement.OnPreviewMouseRightButtonDown(MouseButtonEventArgs) UIElement.OnMouseRightButtonDown(MouseButtonEventArgs) UIElement.OnPreviewMouseRightButtonUp(MouseButtonEventArgs) UIElement.OnMouseRightButtonUp(MouseButtonEventArgs) UIElement.OnPreviewMouseMove(MouseEventArgs) UIElement.OnMouseMove(MouseEventArgs) UIElement.OnPreviewMouseWheel(MouseWheelEventArgs) UIElement.OnMouseWheel(MouseWheelEventArgs) UIElement.OnMouseEnter(MouseEventArgs) UIElement.OnMouseLeave(MouseEventArgs) UIElement.OnGotMouseCapture(MouseEventArgs) UIElement.OnLostMouseCapture(MouseEventArgs) UIElement.OnQueryCursor(QueryCursorEventArgs) UIElement.OnPreviewStylusDown(StylusDownEventArgs) UIElement.OnStylusDown(StylusDownEventArgs) UIElement.OnPreviewStylusUp(StylusEventArgs) UIElement.OnStylusUp(StylusEventArgs) UIElement.OnPreviewStylusMove(StylusEventArgs) UIElement.OnStylusMove(StylusEventArgs) UIElement.OnPreviewStylusInAirMove(StylusEventArgs) UIElement.OnStylusInAirMove(StylusEventArgs) UIElement.OnStylusEnter(StylusEventArgs) UIElement.OnStylusLeave(StylusEventArgs) UIElement.OnPreviewStylusInRange(StylusEventArgs) UIElement.OnStylusInRange(StylusEventArgs) UIElement.OnPreviewStylusOutOfRange(StylusEventArgs) UIElement.OnStylusOutOfRange(StylusEventArgs) UIElement.OnPreviewStylusSystemGesture(StylusSystemGestureEventArgs) UIElement.OnStylusSystemGesture(StylusSystemGestureEventArgs) UIElement.OnGotStylusCapture(StylusEventArgs) UIElement.OnLostStylusCapture(StylusEventArgs) UIElement.OnStylusButtonDown(StylusButtonEventArgs) UIElement.OnStylusButtonUp(StylusButtonEventArgs) UIElement.OnPreviewStylusButtonDown(StylusButtonEventArgs) UIElement.OnPreviewStylusButtonUp(StylusButtonEventArgs) UIElement.OnPreviewKeyDown(KeyEventArgs) UIElement.OnKeyDown(KeyEventArgs) UIElement.OnPreviewKeyUp(KeyEventArgs) UIElement.OnKeyUp(KeyEventArgs) UIElement.OnPreviewGotKeyboardFocus(KeyboardFocusChangedEventArgs) UIElement.OnGotKeyboardFocus(KeyboardFocusChangedEventArgs) UIElement.OnPreviewLostKeyboardFocus(KeyboardFocusChangedEventArgs) UIElement.OnLostKeyboardFocus(KeyboardFocusChangedEventArgs) UIElement.OnPreviewTextInput(TextCompositionEventArgs) UIElement.OnTextInput(TextCompositionEventArgs) UIElement.OnPreviewQueryContinueDrag(QueryContinueDragEventArgs) UIElement.OnQueryContinueDrag(QueryContinueDragEventArgs) UIElement.OnPreviewGiveFeedback(GiveFeedbackEventArgs) UIElement.OnGiveFeedback(GiveFeedbackEventArgs) UIElement.OnPreviewDragEnter(DragEventArgs) UIElement.OnDragEnter(DragEventArgs) UIElement.OnPreviewDragOver(DragEventArgs) UIElement.OnDragOver(DragEventArgs) UIElement.OnPreviewDragLeave(DragEventArgs) UIElement.OnDragLeave(DragEventArgs) UIElement.OnPreviewDrop(DragEventArgs) UIElement.OnDrop(DragEventArgs) UIElement.OnPreviewTouchDown(TouchEventArgs) UIElement.OnTouchDown(TouchEventArgs) UIElement.OnPreviewTouchMove(TouchEventArgs) UIElement.OnTouchMove(TouchEventArgs) UIElement.OnPreviewTouchUp(TouchEventArgs) UIElement.OnTouchUp(TouchEventArgs) UIElement.OnGotTouchCapture(TouchEventArgs) UIElement.OnLostTouchCapture(TouchEventArgs) UIElement.OnTouchEnter(TouchEventArgs) UIElement.OnTouchLeave(TouchEventArgs) UIElement.OnIsMouseDirectlyOverChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsKeyboardFocusWithinChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsMouseCapturedChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsMouseCaptureWithinChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsStylusDirectlyOverChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsStylusCapturedChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsStylusCaptureWithinChanged(DependencyPropertyChangedEventArgs) UIElement.OnIsKeyboardFocusedChanged(DependencyPropertyChangedEventArgs) UIElement.InvalidateMeasure() UIElement.InvalidateArrange() UIElement.InvalidateVisual() UIElement.OnChildDesiredSizeChanged(UIElement) UIElement.Measure(Size) UIElement.Arrange(Rect) UIElement.UpdateLayout() UIElement.TranslatePoint(Point, UIElement) UIElement.InputHitTest(Point) UIElement.CaptureMouse() UIElement.ReleaseMouseCapture() UIElement.CaptureStylus() UIElement.ReleaseStylusCapture() UIElement.Focus() UIElement.OnAccessKey(AccessKeyEventArgs) UIElement.HitTestCore(PointHitTestParameters) UIElement.HitTestCore(GeometryHitTestParameters) UIElement.OnLostFocus(RoutedEventArgs) UIElement.OnCreateAutomationPeer() UIElement.OnManipulationStarting(ManipulationStartingEventArgs) UIElement.OnManipulationStarted(ManipulationStartedEventArgs) UIElement.OnManipulationDelta(ManipulationDeltaEventArgs) UIElement.OnManipulationInertiaStarting(ManipulationInertiaStartingEventArgs) UIElement.OnManipulationBoundaryFeedback(ManipulationBoundaryFeedbackEventArgs) UIElement.OnManipulationCompleted(ManipulationCompletedEventArgs) UIElement.CaptureTouch(TouchDevice) UIElement.ReleaseTouchCapture(TouchDevice) UIElement.ReleaseAllTouchCaptures() UIElement.HasAnimatedProperties UIElement.InputBindings UIElement.CommandBindings UIElement.AllowDrop UIElement.StylusPlugIns UIElement.DesiredSize UIElement.IsMeasureValid UIElement.IsArrangeValid UIElement.RenderSize UIElement.RenderTransform UIElement.RenderTransformOrigin UIElement.IsMouseDirectlyOver UIElement.IsMouseOver UIElement.IsStylusOver UIElement.IsKeyboardFocusWithin UIElement.IsMouseCaptured UIElement.IsMouseCaptureWithin UIElement.IsStylusDirectlyOver UIElement.IsStylusCaptured UIElement.IsStylusCaptureWithin UIElement.IsKeyboardFocused UIElement.IsInputMethodEnabled UIElement.Opacity UIElement.OpacityMask UIElement.BitmapEffect UIElement.Effect UIElement.BitmapEffectInput UIElement.CacheMode UIElement.Uid UIElement.Visibility UIElement.ClipToBounds UIElement.Clip UIElement.SnapsToDevicePixels UIElement.IsFocused UIElement.IsEnabled UIElement.IsEnabledCore UIElement.IsHitTestVisible UIElement.IsVisible UIElement.Focusable UIElement.PersistId UIElement.IsManipulationEnabled UIElement.AreAnyTouchesOver UIElement.AreAnyTouchesDirectlyOver UIElement.AreAnyTouchesCapturedWithin UIElement.AreAnyTouchesCaptured UIElement.TouchesCaptured UIElement.TouchesCapturedWithin UIElement.TouchesOver UIElement.TouchesDirectlyOver UIElement.PreviewMouseDown UIElement.MouseDown UIElement.PreviewMouseUp UIElement.MouseUp UIElement.PreviewMouseLeftButtonDown UIElement.MouseLeftButtonDown UIElement.PreviewMouseLeftButtonUp UIElement.MouseLeftButtonUp UIElement.PreviewMouseRightButtonDown UIElement.MouseRightButtonDown UIElement.PreviewMouseRightButtonUp UIElement.MouseRightButtonUp UIElement.PreviewMouseMove UIElement.MouseMove UIElement.PreviewMouseWheel UIElement.MouseWheel UIElement.MouseEnter UIElement.MouseLeave UIElement.GotMouseCapture UIElement.LostMouseCapture UIElement.QueryCursor UIElement.PreviewStylusDown UIElement.StylusDown UIElement.PreviewStylusUp UIElement.StylusUp UIElement.PreviewStylusMove UIElement.StylusMove UIElement.PreviewStylusInAirMove UIElement.StylusInAirMove UIElement.StylusEnter UIElement.StylusLeave UIElement.PreviewStylusInRange UIElement.StylusInRange UIElement.PreviewStylusOutOfRange UIElement.StylusOutOfRange UIElement.PreviewStylusSystemGesture UIElement.StylusSystemGesture UIElement.GotStylusCapture UIElement.LostStylusCapture UIElement.StylusButtonDown UIElement.StylusButtonUp UIElement.PreviewStylusButtonDown UIElement.PreviewStylusButtonUp UIElement.PreviewKeyDown UIElement.KeyDown UIElement.PreviewKeyUp UIElement.KeyUp UIElement.PreviewGotKeyboardFocus UIElement.GotKeyboardFocus UIElement.PreviewLostKeyboardFocus UIElement.LostKeyboardFocus UIElement.PreviewTextInput UIElement.TextInput UIElement.PreviewQueryContinueDrag UIElement.QueryContinueDrag UIElement.PreviewGiveFeedback UIElement.GiveFeedback UIElement.PreviewDragEnter UIElement.DragEnter UIElement.PreviewDragOver UIElement.DragOver UIElement.PreviewDragLeave UIElement.DragLeave UIElement.PreviewDrop UIElement.Drop UIElement.PreviewTouchDown UIElement.TouchDown UIElement.PreviewTouchMove UIElement.TouchMove UIElement.PreviewTouchUp UIElement.TouchUp UIElement.GotTouchCapture UIElement.LostTouchCapture UIElement.TouchEnter UIElement.TouchLeave UIElement.IsMouseDirectlyOverChanged UIElement.IsKeyboardFocusWithinChanged UIElement.IsMouseCapturedChanged UIElement.IsMouseCaptureWithinChanged UIElement.IsStylusDirectlyOverChanged UIElement.IsStylusCapturedChanged UIElement.IsStylusCaptureWithinChanged UIElement.IsKeyboardFocusedChanged UIElement.LayoutUpdated UIElement.GotFocus UIElement.LostFocus UIElement.IsEnabledChanged UIElement.IsHitTestVisibleChanged UIElement.IsVisibleChanged UIElement.FocusableChanged UIElement.ManipulationStarting UIElement.ManipulationStarted UIElement.ManipulationDelta UIElement.ManipulationInertiaStarting UIElement.ManipulationBoundaryFeedback UIElement.ManipulationCompleted Visual.AddVisualChild(Visual) Visual.RemoveVisualChild(Visual) Visual.OnVisualChildrenChanged(DependencyObject, DependencyObject) Visual.IsAncestorOf(DependencyObject) Visual.IsDescendantOf(DependencyObject) Visual.FindCommonVisualAncestor(DependencyObject) Visual.TransformToAncestor(Visual) Visual.TransformToAncestor(Visual3D) Visual.TransformToDescendant(Visual) Visual.TransformToVisual(Visual) Visual.PointToScreen(Point) Visual.PointFromScreen(Point) Visual.VisualParent Visual.VisualTransform Visual.VisualEffect Visual.VisualBitmapEffect Visual.VisualBitmapEffectInput Visual.VisualCacheMode Visual.VisualScrollableAreaClip Visual.VisualClip Visual.VisualOffset Visual.VisualOpacity Visual.VisualEdgeMode Visual.VisualBitmapScalingMode Visual.VisualClearTypeHint Visual.VisualTextRenderingMode Visual.VisualTextHintingMode Visual.VisualOpacityMask Visual.VisualXSnappingGuidelines Visual.VisualYSnappingGuidelines DependencyObject.Equals(object) DependencyObject.GetHashCode() DependencyObject.GetValue(DependencyProperty) DependencyObject.SetValue(DependencyProperty, object) DependencyObject.SetCurrentValue(DependencyProperty, object) DependencyObject.SetValue(DependencyPropertyKey, object) DependencyObject.ClearValue(DependencyProperty) DependencyObject.ClearValue(DependencyPropertyKey) DependencyObject.CoerceValue(DependencyProperty) DependencyObject.InvalidateProperty(DependencyProperty) DependencyObject.ShouldSerializeProperty(DependencyProperty) DependencyObject.ReadLocalValue(DependencyProperty) DependencyObject.GetLocalValueEnumerator() DependencyObject.DependencyObjectType DependencyObject.IsSealed DispatcherObject.Dispatcher object.Equals(object, object) object.ReferenceEquals(object, object) object.GetType() object.MemberwiseClone() Constructors SVGImage() public SVGImage() Fields CustomBrushesProperty public static readonly DependencyProperty CustomBrushesProperty Field Value DependencyProperty ExternalFileLoaderProperty public static readonly DependencyProperty ExternalFileLoaderProperty Field Value DependencyProperty FileSourceProperty public static readonly DependencyProperty FileSourceProperty Field Value DependencyProperty ImageSourcePoperty public static DependencyProperty ImageSourcePoperty Field Value DependencyProperty OverrideColorProperty public static readonly DependencyProperty OverrideColorProperty Field Value DependencyProperty OverrideStrokeWidthProperty public static readonly DependencyProperty OverrideStrokeWidthProperty Field Value DependencyProperty SizeTypeProperty public static DependencyProperty SizeTypeProperty Field Value DependencyProperty SourceProperty public static readonly DependencyProperty SourceProperty Field Value DependencyProperty UriSourceProperty Identifies the UriSource dependency property. public static readonly DependencyProperty UriSourceProperty Field Value DependencyProperty UseAnimationsProperty public static readonly DependencyProperty UseAnimationsProperty Field Value DependencyProperty Properties BaseUri Gets or sets the base URI of the current application context. public Uri BaseUri { get; set; } Property Value Uri The base URI of the application context. CustomBrushes public Dictionary CustomBrushes { get; set; } Property Value Dictionary ExternalFileLoader public IExternalFileLoader ExternalFileLoader { get; set; } Property Value IExternalFileLoader FileSource public string FileSource { get; set; } Property Value string ImageSource public Drawing ImageSource { get; set; } Property Value Drawing OverrideColor public Color? OverrideColor { get; set; } Property Value Color? OverrideStrokeWidth public double? OverrideStrokeWidth { get; set; } Property Value double? SVG public SVG SVG { get; } Property Value SVG SizeType public SVGImage.eSizeType SizeType { get; set; } Property Value SVGImage.eSizeType Source public string Source { get; set; } Property Value string UriSource Gets or sets the path to the SVG file to load into this Canvas. public Uri UriSource { get; set; } Property Value Uri A Uri specifying the path to the SVG source file. The file can be located on a computer, network or assembly resources. Settings this to null will close any opened diagram. Remarks This is the same as the Source property, and added for consistency. See Also UriSource UseAnimations public bool UseAnimations { get; set; } Property Value bool Methods ArrangeOverride(Size) Called to arrange and size the content of a Control object. protected override Size ArrangeOverride(Size arrangeBounds) Parameters arrangeBounds Size The computed size that is used to arrange the content. Returns Size The size of the control. MeasureOverride(Size) Called to remeasure a control. protected override Size MeasureOverride(Size constraint) Parameters constraint Size The maximum size that the method can return. Returns Size The size of the control, up to the maximum specified by constraint. OnInitialized(EventArgs) Raises the Initialized event. This method is invoked whenever IsInitialized is set to true internally. protected override void OnInitialized(EventArgs e) Parameters e EventArgs The RoutedEventArgs that contains the event data. OnRender(DrawingContext) When overridden in a derived class, participates in rendering operations that are directed by the layout system. The rendering instructions for this element are not used directly when this method is invoked, and are instead preserved for later asynchronous use by layout and drawing. protected override void OnRender(DrawingContext dc) Parameters dc DrawingContext OnRenderSizeChanged(SizeChangedInfo) Raises the SizeChanged event, using the specified information as part of the eventual event data. protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo) Parameters sizeInfo SizeChangedInfo Details of the old and new size involved in the change. ReRenderSvg() public void ReRenderSvg() SetImage(Stream) public void SetImage(Stream stream) Parameters stream Stream SetImage(string) public void SetImage(string svgFilename) Parameters svgFilename string SetImage(Uri) public void SetImage(Uri uriSource) Parameters uriSource Uri SetImage(Drawing) public void SetImage(Drawing drawing) Parameters drawing Drawing" + }, + "api/SVGImage.SVG.SVGRender.html": { + "href": "api/SVGImage.SVG.SVGRender.html", + "title": "Class SVGRender | SVGImage Documentation", + "keywords": "Class SVGRender Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll This is the class that creates the WPF Drawing object based on the information from the SVG class. public class SVGRender Inheritance object SVGRender Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors SVGRender() public SVGRender() See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials SVGRender(IExternalFileLoader) public SVGRender(IExternalFileLoader fileLoader) Parameters fileLoader IExternalFileLoader See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials Properties CustomBrushes public Dictionary CustomBrushes { get; set; } Property Value Dictionary See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials ExternalFileLoader public IExternalFileLoader ExternalFileLoader { get; set; } Property Value IExternalFileLoader See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials OverrideColor public Color? OverrideColor { get; set; } Property Value Color? See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials OverrideStrokeWidth public double? OverrideStrokeWidth { get; set; } Property Value double? See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials SVG public SVG SVG { get; } Property Value SVG See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials UseAnimations public bool UseAnimations { get; set; } Property Value bool See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials Methods CreateDrawing(SVG) public DrawingGroup CreateDrawing(SVG svg) Parameters svg SVG Returns DrawingGroup See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials CreateDrawing(Shape) public DrawingGroup CreateDrawing(Shape shape) Parameters shape Shape Returns DrawingGroup See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials LoadDrawing(Stream) public DrawingGroup LoadDrawing(Stream stream) Parameters stream Stream Returns DrawingGroup See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials LoadDrawing(TextReader) public DrawingGroup LoadDrawing(TextReader txtReader) Parameters txtReader TextReader Returns DrawingGroup See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials LoadDrawing(string) public DrawingGroup LoadDrawing(string filename) Parameters filename string Returns DrawingGroup See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials LoadDrawing(Uri) public DrawingGroup LoadDrawing(Uri fileUri) Parameters fileUri Uri Returns DrawingGroup See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials LoadDrawing(XmlReader) public DrawingGroup LoadDrawing(XmlReader xmlReader) Parameters xmlReader XmlReader Returns DrawingGroup See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials LoadXmlDrawing(string) public DrawingGroup LoadXmlDrawing(string fileXml) Parameters fileXml string Returns DrawingGroup See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials See Also http://www.w3.org/TR/SVGTiny12/ http://commons.oreilly.com/wiki/index.php/SVG_Essentials" + }, + "api/SVGImage.SVG.Shapes.CircleShape.html": { + "href": "api/SVGImage.SVG.Shapes.CircleShape.html", + "title": "Class CircleShape | SVGImage Documentation", + "keywords": "Class CircleShape Namespace SVGImage.SVG.Shapes Assembly DotNetProjects.SVGImage.dll public sealed class CircleShape : Shape Inheritance object ClipArtElement Shape CircleShape Inherited Members Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors CircleShape(SVG, XmlNode) public CircleShape(SVG svg, XmlNode node) Parameters svg SVG node XmlNode Properties CX public double CX { get; set; } Property Value double CY public double CY { get; set; } Property Value double R public double R { get; set; } Property Value double" + }, + "api/SVGImage.SVG.Shapes.Clip.html": { + "href": "api/SVGImage.SVG.Shapes.Clip.html", + "title": "Class Clip | SVGImage Documentation", + "keywords": "Class Clip Namespace SVGImage.SVG.Shapes Assembly DotNetProjects.SVGImage.dll public sealed class Clip : Group Inheritance object ClipArtElement Shape Group Clip Inherited Members Group.Elements Group.IsSwitch Group.AddToList(SVG, List, XmlNode, Shape) Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors Clip(SVG, XmlNode, Shape) public Clip(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape Properties ClipGeometry public Geometry ClipGeometry { get; } Property Value Geometry" + }, + "api/SVGImage.SVG.Shapes.EllipseShape.html": { + "href": "api/SVGImage.SVG.Shapes.EllipseShape.html", + "title": "Class EllipseShape | SVGImage Documentation", + "keywords": "Class EllipseShape Namespace SVGImage.SVG.Shapes Assembly DotNetProjects.SVGImage.dll public sealed class EllipseShape : Shape Inheritance object ClipArtElement Shape EllipseShape Inherited Members Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors EllipseShape(SVG, XmlNode) public EllipseShape(SVG svg, XmlNode node) Parameters svg SVG node XmlNode Properties CX public double CX { get; set; } Property Value double CY public double CY { get; set; } Property Value double RX public double RX { get; set; } Property Value double RY public double RY { get; set; } Property Value double" + }, + "api/SVGImage.SVG.Shapes.Group.html": { + "href": "api/SVGImage.SVG.Shapes.Group.html", + "title": "Class Group | SVGImage Documentation", + "keywords": "Class Group Namespace SVGImage.SVG.Shapes Assembly DotNetProjects.SVGImage.dll public class Group : Shape Inheritance object ClipArtElement Shape Group Derived Filter Clip Inherited Members Shape.m_fill Shape.m_stroke Shape.m_textstyle Shape.m_localStyle Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ParseAtStart(SVG, XmlNode) Shape.ParseLocalStyle(SVG) Shape.Parse(SVG, string, string) Shape.GetFill(SVG) Shape.GetTextStyle(SVG) Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors Group(SVG, XmlNode, Shape) public Group(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape Properties Elements public IList Elements { get; } Property Value IList IsSwitch public bool IsSwitch { get; set; } Property Value bool Methods AddToList(SVG, List, XmlNode, Shape) public static Shape AddToList(SVG svg, List list, XmlNode childnode, Shape parent) Parameters svg SVG list List childnode XmlNode parent Shape Returns Shape" + }, + "api/SVGImage.SVG.Shapes.ImageShape.html": { + "href": "api/SVGImage.SVG.Shapes.ImageShape.html", + "title": "Class ImageShape | SVGImage Documentation", + "keywords": "Class ImageShape Namespace SVGImage.SVG.Shapes Assembly DotNetProjects.SVGImage.dll public sealed class ImageShape : Shape Inheritance object ClipArtElement Shape ImageShape Inherited Members Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors ImageShape(SVG, XmlNode) public ImageShape(SVG svg, XmlNode node) Parameters svg SVG node XmlNode Properties Height public double Height { get; set; } Property Value double ImageSource public ImageSource ImageSource { get; } Property Value ImageSource Width public double Width { get; set; } Property Value double X public double X { get; set; } Property Value double Y public double Y { get; set; } Property Value double" + }, + "api/SVGImage.SVG.Shapes.LineShape.html": { + "href": "api/SVGImage.SVG.Shapes.LineShape.html", + "title": "Class LineShape | SVGImage Documentation", + "keywords": "Class LineShape Namespace SVGImage.SVG.Shapes Assembly DotNetProjects.SVGImage.dll public sealed class LineShape : Shape Inheritance object ClipArtElement Shape LineShape Inherited Members Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors LineShape(SVG, XmlNode) public LineShape(SVG svg, XmlNode node) Parameters svg SVG node XmlNode Properties P1 public Point P1 { get; } Property Value Point P2 public Point P2 { get; } Property Value Point" + }, + "api/SVGImage.SVG.Shapes.PolygonShape.html": { + "href": "api/SVGImage.SVG.Shapes.PolygonShape.html", + "title": "Class PolygonShape | SVGImage Documentation", + "keywords": "Class PolygonShape Namespace SVGImage.SVG.Shapes Assembly DotNetProjects.SVGImage.dll public sealed class PolygonShape : Shape Inheritance object ClipArtElement Shape PolygonShape Inherited Members Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors PolygonShape(SVG, XmlNode) public PolygonShape(SVG svg, XmlNode node) Parameters svg SVG node XmlNode Properties Fill public override Fill Fill { get; } Property Value Fill Points public Point[] Points { get; } Property Value Point[]" + }, + "api/SVGImage.SVG.Shapes.PolylineShape.html": { + "href": "api/SVGImage.SVG.Shapes.PolylineShape.html", + "title": "Class PolylineShape | SVGImage Documentation", + "keywords": "Class PolylineShape Namespace SVGImage.SVG.Shapes Assembly DotNetProjects.SVGImage.dll public sealed class PolylineShape : Shape Inheritance object ClipArtElement Shape PolylineShape Inherited Members Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors PolylineShape(SVG, XmlNode) public PolylineShape(SVG svg, XmlNode node) Parameters svg SVG node XmlNode Properties Points public Point[] Points { get; } Property Value Point[]" + }, + "api/SVGImage.SVG.Shapes.RectangleShape.html": { + "href": "api/SVGImage.SVG.Shapes.RectangleShape.html", + "title": "Class RectangleShape | SVGImage Documentation", + "keywords": "Class RectangleShape Namespace SVGImage.SVG.Shapes Assembly DotNetProjects.SVGImage.dll public sealed class RectangleShape : Shape Inheritance object ClipArtElement Shape RectangleShape Inherited Members Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors RectangleShape(SVG, XmlNode) public RectangleShape(SVG svg, XmlNode node) Parameters svg SVG node XmlNode Properties Fill public override Fill Fill { get; } Property Value Fill Height public double Height { get; set; } Property Value double RX public double RX { get; set; } Property Value double RY public double RY { get; set; } Property Value double Width public double Width { get; set; } Property Value double X public double X { get; set; } Property Value double Y public double Y { get; set; } Property Value double Methods Parse(SVG, string, string) protected override void Parse(SVG svg, string name, string value) Parameters svg SVG name string value string" + }, + "api/SVGImage.SVG.Shapes.Shape.html": { + "href": "api/SVGImage.SVG.Shapes.Shape.html", + "title": "Class Shape | SVGImage Documentation", + "keywords": "Class Shape Namespace SVGImage.SVG.Shapes Assembly DotNetProjects.SVGImage.dll public class Shape : ClipArtElement Inheritance object ClipArtElement Shape Derived AnimationBase FilterBaseFe PathShape CircleShape EllipseShape Group ImageShape LineShape PolygonShape PolylineShape RectangleShape UseShape TextShape TextSpan Inherited Members ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors Shape(SVG, List, Shape) public Shape(SVG svg, List attrs, Shape parent) Parameters svg SVG attrs List parent Shape Shape(SVG, XmlNode) public Shape(SVG svg, XmlNode node) Parameters svg SVG node XmlNode Shape(SVG, XmlNode, Shape) public Shape(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape Fields Display public bool Display Field Value bool m_fill protected Fill m_fill Field Value Fill m_localStyle protected string m_localStyle Field Value string m_stroke protected Stroke m_stroke Field Value Stroke m_textstyle protected TextStyle m_textstyle Field Value TextStyle Properties Fill public virtual Fill Fill { get; set; } Property Value Fill Opacity public double Opacity { get; set; } Property Value double PaintServerKey public virtual string PaintServerKey { get; set; } Property Value string Parent public Shape Parent { get; set; } Property Value Shape RequiredExtensions public string RequiredExtensions { get; set; } Property Value string RequiredFeatures public string RequiredFeatures { get; set; } Property Value string Stroke public virtual Stroke Stroke { get; set; } Property Value Stroke TextStyle public virtual TextStyle TextStyle { get; } Property Value TextStyle Transform public virtual Transform Transform { get; } Property Value Transform Visibility public Visibility Visibility { get; set; } Property Value Visibility Methods GetFill(SVG) protected Fill GetFill(SVG svg) Parameters svg SVG Returns Fill GetTextStyle(SVG) protected TextStyle GetTextStyle(SVG svg) Parameters svg SVG Returns TextStyle Parse(SVG, string, string) protected virtual void Parse(SVG svg, string name, string value) Parameters svg SVG name string value string ParseAtStart(SVG, XmlNode) protected virtual void ParseAtStart(SVG svg, XmlNode node) Parameters svg SVG node XmlNode ParseLocalStyle(SVG) protected virtual void ParseLocalStyle(SVG svg) Parameters svg SVG ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + }, + "api/SVGImage.SVG.Shapes.UseShape.html": { + "href": "api/SVGImage.SVG.Shapes.UseShape.html", + "title": "Class UseShape | SVGImage Documentation", + "keywords": "Class UseShape Namespace SVGImage.SVG.Shapes Assembly DotNetProjects.SVGImage.dll public sealed class UseShape : Shape Inheritance object ClipArtElement Shape UseShape Inherited Members Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors UseShape(SVG, XmlNode) public UseShape(SVG svg, XmlNode node) Parameters svg SVG node XmlNode Properties X public double X { get; set; } Property Value double Y public double Y { get; set; } Property Value double hRef public string hRef { get; set; } Property Value string Methods Parse(SVG, string, string) protected override void Parse(SVG svg, string name, string value) Parameters svg SVG name string value string" + }, + "api/SVGImage.SVG.Shapes.html": { + "href": "api/SVGImage.SVG.Shapes.html", + "title": "Namespace SVGImage.SVG.Shapes | SVGImage Documentation", + "keywords": "Namespace SVGImage.SVG.Shapes Classes CircleShape Clip EllipseShape Group ImageShape LineShape PolygonShape PolylineShape RectangleShape Shape UseShape" + }, + "api/SVGImage.SVG.Stroke.eLineCap.html": { + "href": "api/SVGImage.SVG.Stroke.eLineCap.html", + "title": "Enum Stroke.eLineCap | SVGImage Documentation", + "keywords": "Enum Stroke.eLineCap Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public enum Stroke.eLineCap Fields butt = 0 round = 1 square = 2" + }, + "api/SVGImage.SVG.Stroke.eLineJoin.html": { + "href": "api/SVGImage.SVG.Stroke.eLineJoin.html", + "title": "Enum Stroke.eLineJoin | SVGImage Documentation", + "keywords": "Enum Stroke.eLineJoin Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public enum Stroke.eLineJoin Fields bevel = 2 miter = 0 round = 1" + }, + "api/SVGImage.SVG.Stroke.html": { + "href": "api/SVGImage.SVG.Stroke.html", + "title": "Class Stroke | SVGImage Documentation", + "keywords": "Class Stroke Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public sealed class Stroke Inheritance object Stroke Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors Stroke(SVG) public Stroke(SVG svg) Parameters svg SVG Properties LineCap public Stroke.eLineCap LineCap { get; set; } Property Value Stroke.eLineCap LineJoin public Stroke.eLineJoin LineJoin { get; set; } Property Value Stroke.eLineJoin Opacity public double Opacity { get; set; } Property Value double PaintServerKey public string PaintServerKey { get; set; } Property Value string StrokeArray public double[] StrokeArray { get; set; } Property Value double[] Width public double Width { get; set; } Property Value double Methods IsEmpty(SVG) public bool IsEmpty(SVG svg) Parameters svg SVG Returns bool StrokeBrush(SVG, SVGRender, Shape, double, Rect) public Brush StrokeBrush(SVG svg, SVGRender svgRender, Shape shape, double elementOpacity, Rect bounds) Parameters svg SVG svgRender SVGRender shape Shape elementOpacity double bounds Rect Returns Brush" + }, + "api/SVGImage.SVG.StyleItem.html": { + "href": "api/SVGImage.SVG.StyleItem.html", + "title": "Class StyleItem | SVGImage Documentation", + "keywords": "Class StyleItem Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public class StyleItem Inheritance object StyleItem Inherited Members object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors StyleItem(string, string) public StyleItem(string name, string value) Parameters name string value string Properties Name public string Name { get; set; } Property Value string Value public string Value { get; set; } Property Value string Methods ReadNextAttr(string, ref int) public static StyleItem ReadNextAttr(string inputstring, ref int startpos) Parameters inputstring string startpos int Returns StyleItem ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + }, + "api/SVGImage.SVG.SvgIconBase.html": { + "href": "api/SVGImage.SVG.SvgIconBase.html", + "title": "Class SvgIconBase | SVGImage Documentation", + "keywords": "Class SvgIconBase Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll This is an abstract implementation of a markup extension that enables the creation of DrawingImage from SVG sources. public abstract class SvgIconBase : MarkupExtension Inheritance object MarkupExtension SvgIconBase Derived SvgIconConverterExtension SvgIconExtension Inherited Members MarkupExtension.ProvideValue(IServiceProvider) object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors SvgIconBase() Initializes a new instance of the SvgIconBase class with the default parameters. protected SvgIconBase() Fields _appName protected string _appName Field Value string _culture protected CultureInfo _culture Field Value CultureInfo Properties AppName Gets or sets the project or application name of the target assembly. public string AppName { get; set; } Property Value string A string specifying the application project name. Remarks This is optional and is only used to resolve the resource Uri at the design time. CultureInfo Gets or sets the main culture information used for rendering texts. public CultureInfo CultureInfo { get; set; } Property Value CultureInfo An instance of the CultureInfo specifying the main culture information for texts. The default is the English culture. Remarks This is the culture information passed to the FormattedText class instance for the text rendering. The library does not currently provide any means of splitting texts into its multi-language parts. OverrideColor public Color? OverrideColor { get; set; } Property Value Color? Methods GetAppName() protected void GetAppName() GetDrawing(Uri) This converts the SVG resource specified by the Uri to DrawingGroup. protected virtual DrawingGroup GetDrawing(Uri svgSource) Parameters svgSource Uri A Uri specifying the source of the SVG resource. Returns DrawingGroup A DrawingGroup of the converted SVG resource. GetEntryAssembly() protected Assembly GetEntryAssembly() Returns Assembly GetExecutingAssembly() protected Assembly GetExecutingAssembly() Returns Assembly GetImage(Uri) This converts the SVG resource specified by the Uri to DrawingImage. protected virtual DrawingImage GetImage(Uri svgSource) Parameters svgSource Uri A Uri specifying the source of the SVG resource. Returns DrawingImage A DrawingImage of the converted SVG resource. Remarks This uses the GetDrawing(Uri) method to convert the SVG resource to DrawingGroup, which is then wrapped in DrawingImage." + }, + "api/SVGImage.SVG.SvgIconConverterExtension.html": { + "href": "api/SVGImage.SVG.SvgIconConverterExtension.html", + "title": "Class SvgIconConverterExtension | SVGImage Documentation", + "keywords": "Class SvgIconConverterExtension Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll This implements a markup extension that enables the creation of DrawingImage from SVG sources. public sealed class SvgIconConverterExtension : SvgIconBase, IValueConverter Inheritance object MarkupExtension SvgIconBase SvgIconConverterExtension Implements IValueConverter Inherited Members SvgIconBase.OverrideColor SvgIconBase.CultureInfo SvgIconBase.AppName object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Remarks The SVG source file can be: From the web From the local computer (relative or absolute paths) From the resources. The rendering settings are provided as properties for customizations. Constructors SvgIconConverterExtension() Initializes a new instance of the SvgIconConverterExtension class with the default parameters. public SvgIconConverterExtension() SvgIconConverterExtension(Uri) public SvgIconConverterExtension(Uri baseUri) Parameters baseUri Uri Methods Convert(object, Type, object, CultureInfo) Converts a value. public object Convert(object value, Type targetType, object parameter, CultureInfo culture) Parameters value object The value produced by the binding source. targetType Type The type of the binding target property. parameter object The converter parameter to use. culture CultureInfo The culture to use in the converter. Returns object A converted value. If the method returns null, the valid null value is used. ConvertBack(object, Type, object, CultureInfo) Converts a value. public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) Parameters value object The value that is produced by the binding target. targetType Type The type to convert to. parameter object The converter parameter to use. culture CultureInfo The culture to use in the converter. Returns object A converted value. If the method returns null, the valid null value is used. ProvideValue(IServiceProvider) Performs the conversion of a valid SVG source file to the DrawingImage that is set as the value of the target property for this markup extension. public override object ProvideValue(IServiceProvider serviceProvider) Parameters serviceProvider IServiceProvider Object that can provide services for the markup extension. Returns object This returns DrawingImage if successful; otherwise, it returns null." + }, + "api/SVGImage.SVG.SvgIconExtension.html": { + "href": "api/SVGImage.SVG.SvgIconExtension.html", + "title": "Class SvgIconExtension | SVGImage Documentation", + "keywords": "Class SvgIconExtension Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll This implements a markup extension that enables the creation of DrawingImage from SVG sources. public sealed class SvgIconExtension : SvgIconBase Inheritance object MarkupExtension SvgIconBase SvgIconExtension Inherited Members SvgIconBase.OverrideColor SvgIconBase.CultureInfo SvgIconBase.AppName object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Remarks The SVG source file can be: From the web From the local computer (relative or absolute paths) From the resources. The rendering settings are provided as properties for customizations. Constructors SvgIconExtension() Initializes a new instance of the SvgIconExtension class with the default parameters. public SvgIconExtension() SvgIconExtension(string) Initializes a new instance of the SvgIconExtension class with the specified SVG file path. public SvgIconExtension(string svgPath) Parameters svgPath string Properties Source Gets or sets the SVG source file. public string Source { get; set; } Property Value string A string specifying the path of the SVG source file. The default is null. Methods ProvideValue(IServiceProvider) Performs the conversion of a valid SVG source file to the DrawingImage that is set as the value of the target property for this markup extension. public override object ProvideValue(IServiceProvider serviceProvider) Parameters serviceProvider IServiceProvider Object that can provide services for the markup extension. Returns object This returns DrawingImage if successful; otherwise, it returns null." + }, + "api/SVGImage.SVG.TextShape.html": { + "href": "api/SVGImage.SVG.TextShape.html", + "title": "Class TextShape | SVGImage Documentation", + "keywords": "Class TextShape Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public sealed class TextShape : Shape Inheritance object ClipArtElement Shape TextShape Inherited Members Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.TextStyle Shape.Opacity Shape.Transform Shape.Parent Shape.ToString() ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors TextShape(SVG, XmlNode, Shape) public TextShape(SVG svg, XmlNode node, Shape parent) Parameters svg SVG node XmlNode parent Shape Properties Fill public override Fill Fill { get; } Property Value Fill Stroke public override Stroke Stroke { get; } Property Value Stroke Text public string Text { get; set; } Property Value string TextSpan public TextSpan TextSpan { get; } Property Value TextSpan X public double X { get; set; } Property Value double Y public double Y { get; set; } Property Value double" + }, + "api/SVGImage.SVG.TextSpan.eElementType.html": { + "href": "api/SVGImage.SVG.TextSpan.eElementType.html", + "title": "Enum TextSpan.eElementType | SVGImage Documentation", + "keywords": "Enum TextSpan.eElementType Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public enum TextSpan.eElementType Fields Tag = 0 Text = 1" + }, + "api/SVGImage.SVG.TextSpan.html": { + "href": "api/SVGImage.SVG.TextSpan.html", + "title": "Class TextSpan | SVGImage Documentation", + "keywords": "Class TextSpan Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public class TextSpan : Shape Inheritance object ClipArtElement Shape TextSpan Inherited Members Shape.m_fill Shape.m_stroke Shape.m_textstyle Shape.m_localStyle Shape.Display Shape.PaintServerKey Shape.RequiredExtensions Shape.RequiredFeatures Shape.Visibility Shape.Stroke Shape.Fill Shape.TextStyle Shape.Opacity Shape.Parent Shape.ParseAtStart(SVG, XmlNode) Shape.ParseLocalStyle(SVG) Shape.Parse(SVG, string, string) Shape.GetFill(SVG) Shape.GetTextStyle(SVG) ClipArtElement.Id object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors TextSpan(SVG, Shape, eElementType, List) public TextSpan(SVG svg, Shape parent, TextSpan.eElementType eType, List attrs) Parameters svg SVG parent Shape eType TextSpan.eElementType attrs List TextSpan(SVG, Shape, string) public TextSpan(SVG svg, Shape parent, string text) Parameters svg SVG parent Shape text string Properties Attributes public List Attributes { get; set; } Property Value List Children public List Children { get; } Property Value List ElementType public TextSpan.eElementType ElementType { get; } Property Value TextSpan.eElementType End public TextSpan End { get; set; } Property Value TextSpan StartIndex public int StartIndex { get; set; } Property Value int Text public string Text { get; set; } Property Value string Transform public override Transform Transform { get; } Property Value Transform Methods Parse(SVG, string, TextShape) public static TextSpan Parse(SVG svg, string text, TextShape owner) Parameters svg SVG text string owner TextShape Returns TextSpan Print(TextSpan, string) public static void Print(TextSpan tag, string indent) Parameters tag TextSpan indent string ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + }, + "api/SVGImage.SVG.TextStyle.html": { + "href": "api/SVGImage.SVG.TextStyle.html", + "title": "Class TextStyle | SVGImage Documentation", + "keywords": "Class TextStyle Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public sealed class TextStyle Inheritance object TextStyle Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Constructors TextStyle(SVG, Shape) public TextStyle(SVG svg, Shape owner) Parameters svg SVG owner Shape TextStyle(TextStyle) public TextStyle(TextStyle aCopy) Parameters aCopy TextStyle Properties BaseLineShift public string BaseLineShift { get; set; } Property Value string FontFamily public string FontFamily { get; set; } Property Value string FontSize public double FontSize { get; set; } Property Value double Fontstyle public FontStyle Fontstyle { get; set; } Property Value FontStyle Fontweight public FontWeight Fontweight { get; set; } Property Value FontWeight LetterSpacing public double LetterSpacing { get; set; } Property Value double TextAlignment public TextAlignment TextAlignment { get; set; } Property Value TextAlignment TextDecoration public TextDecorationCollection TextDecoration { get; set; } Property Value TextDecorationCollection WordSpacing public double WordSpacing { get; set; } Property Value double Methods Copy(TextStyle) public void Copy(TextStyle aCopy) Parameters aCopy TextStyle" + }, + "api/SVGImage.SVG.Visibility.html": { + "href": "api/SVGImage.SVG.Visibility.html", + "title": "Enum Visibility | SVGImage Documentation", + "keywords": "Enum Visibility Namespace SVGImage.SVG Assembly DotNetProjects.SVGImage.dll public enum Visibility Fields Hidden = 1 Visible = 0" + }, + "api/SVGImage.SVG.html": { + "href": "api/SVGImage.SVG.html", + "title": "Namespace SVGImage.SVG | SVGImage Documentation", + "keywords": "Namespace SVGImage.SVG Classes ClipArtElement Fill PathShape SVG This is the class that reads and parses the XML file. SVGImage This is the SVG image view control. The image control can either load the image from a file SetImage(string) or by setting the Drawing object through SetImage(Drawing), which allows multiple controls to share the same drawing instance. SVGRender This is the class that creates the WPF Drawing object based on the information from the SVG class. Stroke StyleItem SvgIconBase This is an abstract implementation of a markup extension that enables the creation of DrawingImage from SVG sources. SvgIconConverterExtension This implements a markup extension that enables the creation of DrawingImage from SVG sources. SvgIconExtension This implements a markup extension that enables the creation of DrawingImage from SVG sources. TextShape TextSpan TextStyle Enums Fill.eFillRule SVGImage.eSizeType This controls how the image is stretched to fill the control, Stroke.eLineCap Stroke.eLineJoin TextSpan.eElementType Visibility" + }, + "api/index.html": { + "href": "api/index.html", + "title": "SVGImage API Reference | SVGImage Documentation", + "keywords": "SVGImage API Reference Namespaces SVGImage.SVG The namespace containing the SVG controls. SVGImage.SVG.Animation The SVG animation elements namespace. SVGImage.SVG.FileLoaders A namespace defining interfaces for loading external documents and resources. SVGImage.SVG.Filters A namespace defining some of the SVG filters. SVGImage.SVG.PaintServers The namespace defining SVG paint servers. SVGImage.SVG.Shapes The namespace defining the geometric and related SVG shapes." + }, + "articles/intro.html": { + "href": "articles/intro.html", + "title": "Introduction | SVGImage Documentation", + "keywords": "Introduction SVG (Scalable Vector Graphic) is an XML based graphic format. This little project started out as a simple SVG to XAML converter. I looked at some simple SVG files and noticed the similarity to XAML defined graphic, and decided to write a converter. However, I soon realized that SVG is a very complex format, and at the same time, I found no good reason for converting to XAML just to show the image on the screen, so instead, I started working on the SVG, SVGRender and the SVGImage classes. The SVG class is the class that reads and parses the XML file. SVGRender is the class that creates the WPF Drawing object based on the information from the SVG class. SVGImage is the image control. The image control can either load the image from a filename SetImage(filename) or by setting the Drawing object through SetImage(Drawing), which allows multiple controls to share the same drawing instance. The control only has a couple of properties, SizeType and ImageSource. SizeType - controls how the image is stretched to fill the control None: The image is not scaled. The image location is translated so the top left corner of the image bounding box is moved to the top left corner of the image control. ContentToSizeNoStretch: The image is scaled to fit the control without any stretching. Either X or Y direction will be scaled to fill the entire width or height. ContentToSizeStretch: The image will be stretched to fill the entire width and height. SizeToContent: The control will be resized to fit the un-scaled image. If the image is larger than the max size for the control, the control is set to max size and the image is scaled. ViewBoxToSizeNoStretch: Not the content of the image but its viewbox is scaled to fit the control without any stretching.Either X or Y direction will be scaled to fill the entire width or height. For None and ContentToSizeNoStretch, the Horizontal/VerticalContentAlignment properties can be used to position the image within the control. ImageSource - This property is the same as SetImage(drawing), and is exposed to allow for the source to be set through binding." + }, + "articles/license.html": { + "href": "articles/license.html", + "title": "The MIT License (MIT) | SVGImage Documentation", + "keywords": "The MIT License (MIT) Copyright (c) 2020-2023 PropertyTools and DotNetProjects 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." + }, + "index.html": { + "href": "index.html", + "title": "SVGImage | SVGImage Documentation", + "keywords": "SVGImage This is an SVG Image View Control for WPF applications. Initially forked from: SVGImage Control - CodeProject Article Besides the bug fixes, new features are added including the following: Mask/Clip support Support of styles. Simple Animation support. Framework support The SVGImage control library targets the following frameworks .NET Framework, Version 4.0 .NET Framework, Version 4.5 .NET Framework, Version 4.6 .NET Framework, Version 4.7 .NET Framework, Version 4.8 .NET Core, Version 3.1 .NET 6 ~ 7 License The SVGImage control library is relicensed under MIT License, with permission from the original author. Sample Application" + } +} \ No newline at end of file diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000..ccb2d7b --- /dev/null +++ b/logo.svg @@ -0,0 +1,25 @@ + + + + +Created by Docfx + + + + + + + diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..4a6f672 --- /dev/null +++ b/manifest.json @@ -0,0 +1,698 @@ +{ + "source_base_path": "D:/a/SVGImage/SVGImage/Docs", + "xrefmap": "xrefmap.yml", + "files": [ + { + "type": "Resource", + "output": { + "resource": { + "relative_path": "index.json" + } + } + }, + { + "type": "Conceptual", + "source_relative_path": "Readme.md", + "output": { + ".html": { + "relative_path": "Readme.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Animation.Animate.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Animation.Animate.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Animation.AnimateColor.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Animation.AnimateColor.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Animation.AnimateMotion.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Animation.AnimateMotion.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Animation.AnimateTransform.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Animation.AnimateTransform.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Animation.AnimateTransformType.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Animation.AnimateTransformType.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Animation.AnimationBase.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Animation.AnimationBase.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Animation.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Animation.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.ClipArtElement.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.ClipArtElement.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.FileLoaders.FileSystemLoader.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.FileLoaders.FileSystemLoader.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.FileLoaders.IExternalFileLoader.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.FileLoaders.IExternalFileLoader.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.FileLoaders.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.FileLoaders.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Fill.eFillRule.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Fill.eFillRule.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Fill.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Fill.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Filters.Filter.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Filters.Filter.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Filters.FilterBaseFe.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Filters.FilterBaseFe.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Filters.FilterFeGaussianBlur.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Filters.FilterFeGaussianBlur.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Filters.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Filters.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.PaintServers.CurrentColorPaintServer.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.PaintServers.CurrentColorPaintServer.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.PaintServers.GradientColorPaintServer.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.PaintServers.GradientColorPaintServer.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.PaintServers.InheritPaintServer.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.PaintServers.InheritPaintServer.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.PaintServers.LinearGradientColorPaintServer.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.PaintServers.LinearGradientColorPaintServer.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.PaintServers.PaintServer.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.PaintServers.PaintServer.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.PaintServers.PaintServerManager.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.PaintServers.PaintServerManager.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.PaintServers.PatternPaintServer.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.PaintServers.PatternPaintServer.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.PaintServers.RadialGradientColorPaintServer.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.PaintServers.RadialGradientColorPaintServer.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.PaintServers.SolidColorPaintServer.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.PaintServers.SolidColorPaintServer.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.PaintServers.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.PaintServers.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.PathShape.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.PathShape.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.SVG.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.SVG.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.SVGImage.eSizeType.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.SVGImage.eSizeType.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.SVGImage.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.SVGImage.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.SVGRender.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.SVGRender.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Shapes.CircleShape.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Shapes.CircleShape.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Shapes.Clip.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Shapes.Clip.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Shapes.EllipseShape.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Shapes.EllipseShape.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Shapes.Group.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Shapes.Group.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Shapes.ImageShape.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Shapes.ImageShape.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Shapes.LineShape.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Shapes.LineShape.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Shapes.PolygonShape.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Shapes.PolygonShape.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Shapes.PolylineShape.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Shapes.PolylineShape.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Shapes.RectangleShape.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Shapes.RectangleShape.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Shapes.Shape.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Shapes.Shape.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Shapes.UseShape.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Shapes.UseShape.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Shapes.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Shapes.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Stroke.eLineCap.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Stroke.eLineCap.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Stroke.eLineJoin.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Stroke.eLineJoin.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Stroke.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Stroke.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.StyleItem.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.StyleItem.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.SvgIconBase.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.SvgIconBase.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.SvgIconConverterExtension.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.SvgIconConverterExtension.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.SvgIconExtension.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.SvgIconExtension.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.TextShape.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.TextShape.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.TextSpan.eElementType.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.TextSpan.eElementType.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.TextSpan.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.TextSpan.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.TextStyle.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.TextStyle.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.Visibility.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.Visibility.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/SVGImage.SVG.yml", + "output": { + ".html": { + "relative_path": "api/SVGImage.SVG.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "api/index.md", + "output": { + ".html": { + "relative_path": "api/index.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "api/toc.yml", + "output": { + ".html": { + "relative_path": "api/toc.html" + }, + ".json": { + "relative_path": "api/toc.json" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/intro.md", + "output": { + ".html": { + "relative_path": "articles/intro.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/license.md", + "output": { + ".html": { + "relative_path": "articles/license.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "articles/toc.yml", + "output": { + ".html": { + "relative_path": "articles/toc.html" + }, + ".json": { + "relative_path": "articles/toc.json" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "images/dotnetprojects.png", + "output": { + "resource": { + "relative_path": "images/dotnetprojects.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "images/sample.png", + "output": { + "resource": { + "relative_path": "images/sample.png" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "index.md", + "output": { + ".html": { + "relative_path": "index.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "toc.yml", + "output": { + ".html": { + "relative_path": "toc.html" + }, + ".json": { + "relative_path": "toc.json" + } + }, + "version": "" + } + ], + "groups": [ + { + "xrefmap": "xrefmap.yml" + } + ] +} \ No newline at end of file diff --git a/public/bootstrap-icons-6QOYJHKE.woff2 b/public/bootstrap-icons-6QOYJHKE.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..87032d17e78ae28da5f0fc2e52680b01ffa642f7 GIT binary patch literal 130608 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 DaoMW~ literal 0 HcmV?d00001 diff --git a/public/bootstrap-icons-JHE3QUSN.woff b/public/bootstrap-icons-JHE3QUSN.woff new file mode 100644 index 0000000000000000000000000000000000000000..dbeeb055674125ad78fda0f3d166b36e5cc92336 GIT binary patch literal 176200 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

2+UrCZlNAp`)&G@jg{m-!Dn; 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πR(XEyYV3az{Ot$Y*f93mYq^Lnu{qbYp!X!TA9&! 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 F?~0aZ)an2L literal 0 HcmV?d00001 diff --git a/public/c4Diagram-7e558229-ESOFQEAK.min.js b/public/c4Diagram-7e558229-ESOFQEAK.min.js new file mode 100644 index 0000000..3776e28 --- /dev/null +++ b/public/c4Diagram-7e558229-ESOFQEAK.min.js @@ -0,0 +1,11 @@ +import{a as de,f as fe}from"./chunk-BQZXUJB5.min.js";import{$a as Ot,Fa as $t,Ha as te,I as Ie,Ka as Bt,Na as pe,Ta as ye,Ua as ee,Va as At,b as Be,bb as ge,c as Ye,eb as be,fb as _e,gb as xe,h as Dt,hb as me}from"./chunk-DJFTDYIK.min.js";import{d as Zt}from"./chunk-P42HNYSU.min.js";var ke=Zt(Ye(),1);var B0=Zt(Be(),1),Y0=Zt(Ie(),1);var It=function(){var e=function(bt,_,x,m){for(x=x||{},m=bt.length;m--;x[bt[m]]=_);return x},t=[1,24],a=[1,25],o=[1,26],l=[1,27],i=[1,28],s=[1,63],r=[1,64],n=[1,65],h=[1,66],f=[1,67],d=[1,68],p=[1,69],E=[1,29],O=[1,30],R=[1,31],S=[1,32],N=[1,33],Y=[1,34],Q=[1,35],H=[1,36],q=[1,37],G=[1,38],K=[1,39],J=[1,40],Z=[1,41],$=[1,42],tt=[1,43],et=[1,44],it=[1,45],nt=[1,46],st=[1,47],at=[1,48],rt=[1,50],lt=[1,51],ot=[1,52],ct=[1,53],ht=[1,54],ut=[1,55],dt=[1,56],ft=[1,57],pt=[1,58],yt=[1,59],gt=[1,60],Ct=[14,42],Xt=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Tt=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],v=[1,82],k=[1,83],A=[1,84],C=[1,85],w=[12,14,42],oe=[12,14,33,42],Mt=[12,14,33,42,76,77,79,80],mt=[12,33],Wt=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Qt={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:function(_,x,m,g,T,u,Rt){var y=u.length-1;switch(T){case 3:g.setDirection("TB");break;case 4:g.setDirection("BT");break;case 5:g.setDirection("RL");break;case 6:g.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:g.setC4Type(u[y-3]);break;case 19:g.setTitle(u[y].substring(6)),this.$=u[y].substring(6);break;case 20:g.setAccDescription(u[y].substring(15)),this.$=u[y].substring(15);break;case 21:this.$=u[y].trim(),g.setTitle(this.$);break;case 22:case 23:this.$=u[y].trim(),g.setAccDescription(this.$);break;case 28:case 29:u[y].splice(2,0,"ENTERPRISE"),g.addPersonOrSystemBoundary(...u[y]),this.$=u[y];break;case 30:g.addPersonOrSystemBoundary(...u[y]),this.$=u[y];break;case 31:u[y].splice(2,0,"CONTAINER"),g.addContainerBoundary(...u[y]),this.$=u[y];break;case 32:g.addDeploymentNode("node",...u[y]),this.$=u[y];break;case 33:g.addDeploymentNode("nodeL",...u[y]),this.$=u[y];break;case 34:g.addDeploymentNode("nodeR",...u[y]),this.$=u[y];break;case 35:g.popBoundaryParseStack();break;case 39:g.addPersonOrSystem("person",...u[y]),this.$=u[y];break;case 40:g.addPersonOrSystem("external_person",...u[y]),this.$=u[y];break;case 41:g.addPersonOrSystem("system",...u[y]),this.$=u[y];break;case 42:g.addPersonOrSystem("system_db",...u[y]),this.$=u[y];break;case 43:g.addPersonOrSystem("system_queue",...u[y]),this.$=u[y];break;case 44:g.addPersonOrSystem("external_system",...u[y]),this.$=u[y];break;case 45:g.addPersonOrSystem("external_system_db",...u[y]),this.$=u[y];break;case 46:g.addPersonOrSystem("external_system_queue",...u[y]),this.$=u[y];break;case 47:g.addContainer("container",...u[y]),this.$=u[y];break;case 48:g.addContainer("container_db",...u[y]),this.$=u[y];break;case 49:g.addContainer("container_queue",...u[y]),this.$=u[y];break;case 50:g.addContainer("external_container",...u[y]),this.$=u[y];break;case 51:g.addContainer("external_container_db",...u[y]),this.$=u[y];break;case 52:g.addContainer("external_container_queue",...u[y]),this.$=u[y];break;case 53:g.addComponent("component",...u[y]),this.$=u[y];break;case 54:g.addComponent("component_db",...u[y]),this.$=u[y];break;case 55:g.addComponent("component_queue",...u[y]),this.$=u[y];break;case 56:g.addComponent("external_component",...u[y]),this.$=u[y];break;case 57:g.addComponent("external_component_db",...u[y]),this.$=u[y];break;case 58:g.addComponent("external_component_queue",...u[y]),this.$=u[y];break;case 60:g.addRel("rel",...u[y]),this.$=u[y];break;case 61:g.addRel("birel",...u[y]),this.$=u[y];break;case 62:g.addRel("rel_u",...u[y]),this.$=u[y];break;case 63:g.addRel("rel_d",...u[y]),this.$=u[y];break;case 64:g.addRel("rel_l",...u[y]),this.$=u[y];break;case 65:g.addRel("rel_r",...u[y]),this.$=u[y];break;case 66:g.addRel("rel_b",...u[y]),this.$=u[y];break;case 67:u[y].splice(0,1),g.addRel("rel",...u[y]),this.$=u[y];break;case 68:g.updateElStyle("update_el_style",...u[y]),this.$=u[y];break;case 69:g.updateRelStyle("update_rel_style",...u[y]),this.$=u[y];break;case 70:g.updateLayoutConfig("update_layout_config",...u[y]),this.$=u[y];break;case 71:this.$=[u[y]];break;case 72:u[y].unshift(u[y-1]),this.$=u[y];break;case 73:case 75:this.$=u[y].trim();break;case 74:let Et={};Et[u[y-1].trim()]=u[y].trim(),this.$=Et;break;case 76:this.$="";break}},table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:N,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:70,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:N,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:71,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:N,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:72,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:N,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:73,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:N,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{14:[1,74]},e(Ct,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:r,37:n,38:h,39:f,40:d,41:p,44:E,45:O,46:R,47:S,48:N,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt}),e(Ct,[2,14]),e(Xt,[2,16],{12:[1,76]}),e(Ct,[2,36],{12:[1,77]}),e(Tt,[2,19]),e(Tt,[2,20]),{25:[1,78]},{27:[1,79]},e(Tt,[2,23]),{35:80,75:81,76:v,77:k,79:A,80:C},{35:86,75:81,76:v,77:k,79:A,80:C},{35:87,75:81,76:v,77:k,79:A,80:C},{35:88,75:81,76:v,77:k,79:A,80:C},{35:89,75:81,76:v,77:k,79:A,80:C},{35:90,75:81,76:v,77:k,79:A,80:C},{35:91,75:81,76:v,77:k,79:A,80:C},{35:92,75:81,76:v,77:k,79:A,80:C},{35:93,75:81,76:v,77:k,79:A,80:C},{35:94,75:81,76:v,77:k,79:A,80:C},{35:95,75:81,76:v,77:k,79:A,80:C},{35:96,75:81,76:v,77:k,79:A,80:C},{35:97,75:81,76:v,77:k,79:A,80:C},{35:98,75:81,76:v,77:k,79:A,80:C},{35:99,75:81,76:v,77:k,79:A,80:C},{35:100,75:81,76:v,77:k,79:A,80:C},{35:101,75:81,76:v,77:k,79:A,80:C},{35:102,75:81,76:v,77:k,79:A,80:C},{35:103,75:81,76:v,77:k,79:A,80:C},{35:104,75:81,76:v,77:k,79:A,80:C},e(w,[2,59]),{35:105,75:81,76:v,77:k,79:A,80:C},{35:106,75:81,76:v,77:k,79:A,80:C},{35:107,75:81,76:v,77:k,79:A,80:C},{35:108,75:81,76:v,77:k,79:A,80:C},{35:109,75:81,76:v,77:k,79:A,80:C},{35:110,75:81,76:v,77:k,79:A,80:C},{35:111,75:81,76:v,77:k,79:A,80:C},{35:112,75:81,76:v,77:k,79:A,80:C},{35:113,75:81,76:v,77:k,79:A,80:C},{35:114,75:81,76:v,77:k,79:A,80:C},{35:115,75:81,76:v,77:k,79:A,80:C},{20:116,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:N,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{12:[1,118],33:[1,117]},{35:119,75:81,76:v,77:k,79:A,80:C},{35:120,75:81,76:v,77:k,79:A,80:C},{35:121,75:81,76:v,77:k,79:A,80:C},{35:122,75:81,76:v,77:k,79:A,80:C},{35:123,75:81,76:v,77:k,79:A,80:C},{35:124,75:81,76:v,77:k,79:A,80:C},{35:125,75:81,76:v,77:k,79:A,80:C},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(Ct,[2,15]),e(Xt,[2,17],{21:22,19:130,22:t,23:a,24:o,26:l,28:i}),e(Ct,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:a,24:o,26:l,28:i,34:s,36:r,37:n,38:h,39:f,40:d,41:p,44:E,45:O,46:R,47:S,48:N,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt}),e(Tt,[2,21]),e(Tt,[2,22]),e(w,[2,39]),e(oe,[2,71],{75:81,35:132,76:v,77:k,79:A,80:C}),e(Mt,[2,73]),{78:[1,133]},e(Mt,[2,75]),e(Mt,[2,76]),e(w,[2,40]),e(w,[2,41]),e(w,[2,42]),e(w,[2,43]),e(w,[2,44]),e(w,[2,45]),e(w,[2,46]),e(w,[2,47]),e(w,[2,48]),e(w,[2,49]),e(w,[2,50]),e(w,[2,51]),e(w,[2,52]),e(w,[2,53]),e(w,[2,54]),e(w,[2,55]),e(w,[2,56]),e(w,[2,57]),e(w,[2,58]),e(w,[2,60]),e(w,[2,61]),e(w,[2,62]),e(w,[2,63]),e(w,[2,64]),e(w,[2,65]),e(w,[2,66]),e(w,[2,67]),e(w,[2,68]),e(w,[2,69]),e(w,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(mt,[2,28]),e(mt,[2,29]),e(mt,[2,30]),e(mt,[2,31]),e(mt,[2,32]),e(mt,[2,33]),e(mt,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(Xt,[2,18]),e(Ct,[2,38]),e(oe,[2,72]),e(Mt,[2,74]),e(w,[2,24]),e(w,[2,35]),e(Wt,[2,25]),e(Wt,[2,26],{12:[1,138]}),e(Wt,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:function(_,x){if(x.recoverable)this.trace(_);else{var m=new Error(_);throw m.hash=x,m}},parse:function(_){var x=this,m=[0],g=[],T=[null],u=[],Rt=this.table,y="",Et=0,ce=0,Pe=2,he=1,Me=u.slice.call(arguments,1),D=Object.create(this.lexer),vt={yy:{}};for(var qt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,qt)&&(vt.yy[qt]=this.yy[qt]);D.setInput(_,vt.yy),vt.yy.lexer=D,vt.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var Gt=D.yylloc;u.push(Gt);var Le=D.options&&D.options.ranges;typeof vt.yy.parseError=="function"?this.parseError=vt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ne(){var X;return X=g.pop()||D.lex()||he,typeof X!="number"&&(X instanceof Array&&(g=X,X=g.pop()),X=x.symbols_[X]||X),X}for(var M,kt,B,Kt,wt={},Lt,z,ue,Nt;;){if(kt=m[m.length-1],this.defaultActions[kt]?B=this.defaultActions[kt]:((M===null||typeof M>"u")&&(M=Ne()),B=Rt[kt]&&Rt[kt][M]),typeof B>"u"||!B.length||!B[0]){var Jt="";Nt=[];for(Lt in Rt[kt])this.terminals_[Lt]&&Lt>Pe&&Nt.push("'"+this.terminals_[Lt]+"'");D.showPosition?Jt="Parse error on line "+(Et+1)+`: +`+D.showPosition()+` +Expecting `+Nt.join(", ")+", got '"+(this.terminals_[M]||M)+"'":Jt="Parse error on line "+(Et+1)+": Unexpected "+(M==he?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(Jt,{text:D.match,token:this.terminals_[M]||M,line:D.yylineno,loc:Gt,expected:Nt})}if(B[0]instanceof Array&&B.length>1)throw new Error("Parse Error: multiple actions possible at state: "+kt+", token: "+M);switch(B[0]){case 1:m.push(M),T.push(D.yytext),u.push(D.yylloc),m.push(B[1]),M=null,ce=D.yyleng,y=D.yytext,Et=D.yylineno,Gt=D.yylloc;break;case 2:if(z=this.productions_[B[1]][1],wt.$=T[T.length-z],wt._$={first_line:u[u.length-(z||1)].first_line,last_line:u[u.length-1].last_line,first_column:u[u.length-(z||1)].first_column,last_column:u[u.length-1].last_column},Le&&(wt._$.range=[u[u.length-(z||1)].range[0],u[u.length-1].range[1]]),Kt=this.performAction.apply(wt,[y,ce,Et,vt.yy,B[1],T,u].concat(Me)),typeof Kt<"u")return Kt;z&&(m=m.slice(0,-1*z*2),T=T.slice(0,-1*z),u=u.slice(0,-1*z)),m.push(this.productions_[B[1]][0]),T.push(wt.$),u.push(wt._$),ue=Rt[m[m.length-2]][m[m.length-1]],m.push(ue);break;case 3:return!0}}return!0}},Se=function(){var bt={EOF:1,parseError:function(x,m){if(this.yy.parser)this.yy.parser.parseError(x,m);else throw new Error(x)},setInput:function(_,x){return this.yy=x||this.yy||{},this._input=_,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var _=this._input[0];this.yytext+=_,this.yyleng++,this.offset++,this.match+=_,this.matched+=_;var x=_.match(/(?:\r\n?|\n).*/g);return x?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),_},unput:function(_){var x=_.length,m=_.split(/(?:\r\n?|\n)/g);this._input=_+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-x),this.offset-=x;var g=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),m.length-1&&(this.yylineno-=m.length-1);var T=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:m?(m.length===g.length?this.yylloc.first_column:0)+g[g.length-m.length].length-m[0].length:this.yylloc.first_column-x},this.options.ranges&&(this.yylloc.range=[T[0],T[0]+this.yyleng-x]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(_){this.unput(this.match.slice(_))},pastInput:function(){var _=this.matched.substr(0,this.matched.length-this.match.length);return(_.length>20?"...":"")+_.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var _=this.match;return _.length<20&&(_+=this._input.substr(0,20-_.length)),(_.substr(0,20)+(_.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var _=this.pastInput(),x=new Array(_.length+1).join("-");return _+this.upcomingInput()+` +`+x+"^"},test_match:function(_,x){var m,g,T;if(this.options.backtrack_lexer&&(T={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(T.yylloc.range=this.yylloc.range.slice(0))),g=_[0].match(/(?:\r\n?|\n).*/g),g&&(this.yylineno+=g.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:g?g[g.length-1].length-g[g.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+_[0].length},this.yytext+=_[0],this.match+=_[0],this.matches=_,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(_[0].length),this.matched+=_[0],m=this.performAction.call(this,this.yy,this,x,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),m)return m;if(this._backtrack){for(var u in T)this[u]=T[u];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var _,x,m,g;this._more||(this.yytext="",this.match="");for(var T=this._currentRules(),u=0;ux[0].length)){if(x=m,g=u,this.options.backtrack_lexer){if(_=this.test_match(m,T[u]),_!==!1)return _;if(this._backtrack){x=!1;continue}else return!1}else if(!this.options.flex)break}return x?(_=this.test_match(x,T[g]),_!==!1?_:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var x=this.next();return x||this.lex()},begin:function(x){this.conditionStack.push(x)},popState:function(){var x=this.conditionStack.length-1;return x>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(x){return x=this.conditionStack.length-1-Math.abs(x||0),x>=0?this.conditionStack[x]:"INITIAL"},pushState:function(x){this.begin(x)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(x,m,g,T){switch(g){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),26;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;case 23:return this.begin("person"),44;case 24:return this.begin("system_ext_queue"),51;case 25:return this.begin("system_ext_db"),50;case 26:return this.begin("system_ext"),49;case 27:return this.begin("system_queue"),48;case 28:return this.begin("system_db"),47;case 29:return this.begin("system"),46;case 30:return this.begin("boundary"),37;case 31:return this.begin("enterprise_boundary"),34;case 32:return this.begin("system_boundary"),36;case 33:return this.begin("container_ext_queue"),57;case 34:return this.begin("container_ext_db"),56;case 35:return this.begin("container_ext"),55;case 36:return this.begin("container_queue"),54;case 37:return this.begin("container_db"),53;case 38:return this.begin("container"),52;case 39:return this.begin("container_boundary"),38;case 40:return this.begin("component_ext_queue"),63;case 41:return this.begin("component_ext_db"),62;case 42:return this.begin("component_ext"),61;case 43:return this.begin("component_queue"),60;case 44:return this.begin("component_db"),59;case 45:return this.begin("component"),58;case 46:return this.begin("node"),39;case 47:return this.begin("node"),39;case 48:return this.begin("node_l"),40;case 49:return this.begin("node_r"),41;case 50:return this.begin("rel"),64;case 51:return this.begin("birel"),65;case 52:return this.begin("rel_u"),66;case 53:return this.begin("rel_u"),66;case 54:return this.begin("rel_d"),67;case 55:return this.begin("rel_d"),67;case 56:return this.begin("rel_l"),68;case 57:return this.begin("rel_l"),68;case 58:return this.begin("rel_r"),69;case 59:return this.begin("rel_r"),69;case 60:return this.begin("rel_b"),70;case 61:return this.begin("rel_index"),71;case 62:return this.begin("update_el_style"),72;case 63:return this.begin("update_rel_style"),73;case 64:return this.begin("update_layout_config"),74;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return bt}();Qt.lexer=Se;function Ht(){this.yy={}}return Ht.prototype=Qt,Qt.Parser=Ht,new Ht}();It.parser=It;var je=It,U=[],_t=[""],P="global",j="",V=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Pt=[],ae="",re=!1,jt=4,Ut=2,Ae,Ue=function(){return Ae},Fe=function(e){Ae=te(e,Ot())},Ve=function(e,t,a,o,l,i,s,r,n){if(e==null||t===void 0||t===null||a===void 0||a===null||o===void 0||o===null)return;let h={},f=Pt.find(d=>d.from===t&&d.to===a);if(f?h=f:Pt.push(h),h.type=e,h.from=t,h.to=a,h.label={text:o},l==null)h.techn={text:""};else if(typeof l=="object"){let[d,p]=Object.entries(l)[0];h[d]={text:p}}else h.techn={text:l};if(i==null)h.descr={text:""};else if(typeof i=="object"){let[d,p]=Object.entries(i)[0];h[d]={text:p}}else h.descr={text:i};if(typeof s=="object"){let[d,p]=Object.entries(s)[0];h[d]=p}else h.sprite=s;if(typeof r=="object"){let[d,p]=Object.entries(r)[0];h[d]=p}else h.tags=r;if(typeof n=="object"){let[d,p]=Object.entries(n)[0];h[d]=p}else h.link=n;h.wrap=xt()},ze=function(e,t,a,o,l,i,s){if(t===null||a===null)return;let r={},n=U.find(h=>h.alias===t);if(n&&t===n.alias?r=n:(r.alias=t,U.push(r)),a==null?r.label={text:""}:r.label={text:a},o==null)r.descr={text:""};else if(typeof o=="object"){let[h,f]=Object.entries(o)[0];r[h]={text:f}}else r.descr={text:o};if(typeof l=="object"){let[h,f]=Object.entries(l)[0];r[h]=f}else r.sprite=l;if(typeof i=="object"){let[h,f]=Object.entries(i)[0];r[h]=f}else r.tags=i;if(typeof s=="object"){let[h,f]=Object.entries(s)[0];r[h]=f}else r.link=s;r.typeC4Shape={text:e},r.parentBoundary=P,r.wrap=xt()},Xe=function(e,t,a,o,l,i,s,r){if(t===null||a===null)return;let n={},h=U.find(f=>f.alias===t);if(h&&t===h.alias?n=h:(n.alias=t,U.push(n)),a==null?n.label={text:""}:n.label={text:a},o==null)n.techn={text:""};else if(typeof o=="object"){let[f,d]=Object.entries(o)[0];n[f]={text:d}}else n.techn={text:o};if(l==null)n.descr={text:""};else if(typeof l=="object"){let[f,d]=Object.entries(l)[0];n[f]={text:d}}else n.descr={text:l};if(typeof i=="object"){let[f,d]=Object.entries(i)[0];n[f]=d}else n.sprite=i;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];n[f]=d}else n.tags=s;if(typeof r=="object"){let[f,d]=Object.entries(r)[0];n[f]=d}else n.link=r;n.wrap=xt(),n.typeC4Shape={text:e},n.parentBoundary=P},We=function(e,t,a,o,l,i,s,r){if(t===null||a===null)return;let n={},h=U.find(f=>f.alias===t);if(h&&t===h.alias?n=h:(n.alias=t,U.push(n)),a==null?n.label={text:""}:n.label={text:a},o==null)n.techn={text:""};else if(typeof o=="object"){let[f,d]=Object.entries(o)[0];n[f]={text:d}}else n.techn={text:o};if(l==null)n.descr={text:""};else if(typeof l=="object"){let[f,d]=Object.entries(l)[0];n[f]={text:d}}else n.descr={text:l};if(typeof i=="object"){let[f,d]=Object.entries(i)[0];n[f]=d}else n.sprite=i;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];n[f]=d}else n.tags=s;if(typeof r=="object"){let[f,d]=Object.entries(r)[0];n[f]=d}else n.link=r;n.wrap=xt(),n.typeC4Shape={text:e},n.parentBoundary=P},Qe=function(e,t,a,o,l){if(e===null||t===null)return;let i={},s=V.find(r=>r.alias===e);if(s&&e===s.alias?i=s:(i.alias=e,V.push(i)),t==null?i.label={text:""}:i.label={text:t},a==null)i.type={text:"system"};else if(typeof a=="object"){let[r,n]=Object.entries(a)[0];i[r]={text:n}}else i.type={text:a};if(typeof o=="object"){let[r,n]=Object.entries(o)[0];i[r]=n}else i.tags=o;if(typeof l=="object"){let[r,n]=Object.entries(l)[0];i[r]=n}else i.link=l;i.parentBoundary=P,i.wrap=xt(),j=P,P=e,_t.push(j)},He=function(e,t,a,o,l){if(e===null||t===null)return;let i={},s=V.find(r=>r.alias===e);if(s&&e===s.alias?i=s:(i.alias=e,V.push(i)),t==null?i.label={text:""}:i.label={text:t},a==null)i.type={text:"container"};else if(typeof a=="object"){let[r,n]=Object.entries(a)[0];i[r]={text:n}}else i.type={text:a};if(typeof o=="object"){let[r,n]=Object.entries(o)[0];i[r]=n}else i.tags=o;if(typeof l=="object"){let[r,n]=Object.entries(l)[0];i[r]=n}else i.link=l;i.parentBoundary=P,i.wrap=xt(),j=P,P=e,_t.push(j)},qe=function(e,t,a,o,l,i,s,r){if(t===null||a===null)return;let n={},h=V.find(f=>f.alias===t);if(h&&t===h.alias?n=h:(n.alias=t,V.push(n)),a==null?n.label={text:""}:n.label={text:a},o==null)n.type={text:"node"};else if(typeof o=="object"){let[f,d]=Object.entries(o)[0];n[f]={text:d}}else n.type={text:o};if(l==null)n.descr={text:""};else if(typeof l=="object"){let[f,d]=Object.entries(l)[0];n[f]={text:d}}else n.descr={text:l};if(typeof s=="object"){let[f,d]=Object.entries(s)[0];n[f]=d}else n.tags=s;if(typeof r=="object"){let[f,d]=Object.entries(r)[0];n[f]=d}else n.link=r;n.nodeType=e,n.parentBoundary=P,n.wrap=xt(),j=P,P=t,_t.push(j)},Ge=function(){P=j,_t.pop(),j=_t.pop(),_t.push(j)},Ke=function(e,t,a,o,l,i,s,r,n,h,f){let d=U.find(p=>p.alias===t);if(!(d===void 0&&(d=V.find(p=>p.alias===t),d===void 0))){if(a!=null)if(typeof a=="object"){let[p,E]=Object.entries(a)[0];d[p]=E}else d.bgColor=a;if(o!=null)if(typeof o=="object"){let[p,E]=Object.entries(o)[0];d[p]=E}else d.fontColor=o;if(l!=null)if(typeof l=="object"){let[p,E]=Object.entries(l)[0];d[p]=E}else d.borderColor=l;if(i!=null)if(typeof i=="object"){let[p,E]=Object.entries(i)[0];d[p]=E}else d.shadowing=i;if(s!=null)if(typeof s=="object"){let[p,E]=Object.entries(s)[0];d[p]=E}else d.shape=s;if(r!=null)if(typeof r=="object"){let[p,E]=Object.entries(r)[0];d[p]=E}else d.sprite=r;if(n!=null)if(typeof n=="object"){let[p,E]=Object.entries(n)[0];d[p]=E}else d.techn=n;if(h!=null)if(typeof h=="object"){let[p,E]=Object.entries(h)[0];d[p]=E}else d.legendText=h;if(f!=null)if(typeof f=="object"){let[p,E]=Object.entries(f)[0];d[p]=E}else d.legendSprite=f}},Je=function(e,t,a,o,l,i,s){let r=Pt.find(n=>n.from===t&&n.to===a);if(r!==void 0){if(o!=null)if(typeof o=="object"){let[n,h]=Object.entries(o)[0];r[n]=h}else r.textColor=o;if(l!=null)if(typeof l=="object"){let[n,h]=Object.entries(l)[0];r[n]=h}else r.lineColor=l;if(i!=null)if(typeof i=="object"){let[n,h]=Object.entries(i)[0];r[n]=parseInt(h)}else r.offsetX=parseInt(i);if(s!=null)if(typeof s=="object"){let[n,h]=Object.entries(s)[0];r[n]=parseInt(h)}else r.offsetY=parseInt(s)}},Ze=function(e,t,a){let o=jt,l=Ut;if(typeof t=="object"){let i=Object.values(t)[0];o=parseInt(i)}else o=parseInt(t);if(typeof a=="object"){let i=Object.values(a)[0];l=parseInt(i)}else l=parseInt(a);o>=1&&(jt=o),l>=1&&(Ut=l)},$e=function(){return jt},t0=function(){return Ut},e0=function(){return P},i0=function(){return j},Ce=function(e){return e==null?U:U.filter(t=>t.parentBoundary===e)},n0=function(e){return U.find(t=>t.alias===e)},s0=function(e){return Object.keys(Ce(e))},a0=function(e){return e==null?V:V.filter(t=>t.parentBoundary===e)},r0=function(){return Pt},l0=function(){return ae},o0=function(e){re=e},xt=function(){return re},c0=function(){U=[],V=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],j="",P="global",_t=[""],Pt=[],_t=[""],ae="",re=!1,jt=4,Ut=2},h0={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},u0={FILLED:0,OPEN:1},d0={LEFTOF:0,RIGHTOF:1,OVER:2},f0=function(e){ae=te(e,Ot())},ie={addPersonOrSystem:ze,addPersonOrSystemBoundary:Qe,addContainer:Xe,addContainerBoundary:He,addComponent:We,addDeploymentNode:qe,popBoundaryParseStack:Ge,addRel:Ve,updateElStyle:Ke,updateRelStyle:Je,updateLayoutConfig:Ze,autoWrap:xt,setWrap:o0,getC4ShapeArray:Ce,getC4Shape:n0,getC4ShapeKeys:s0,getBoundarys:a0,getCurrentBoundaryParse:e0,getParentBoundaryParse:i0,getRels:r0,getTitle:l0,getC4Type:Ue,getC4ShapeInRow:$e,getC4BoundaryInRow:t0,setAccTitle:be,getAccTitle:_e,getAccDescription:me,setAccDescription:xe,getConfig:()=>Ot().c4,clear:c0,LINETYPE:h0,ARROWTYPE:u0,PLACEMENT:d0,setTitle:f0,setC4Type:Fe},le=function(e,t){return de(e,t)},we=function(e,t,a,o,l,i){let s=e.append("image");s.attr("width",t),s.attr("height",a),s.attr("x",o),s.attr("y",l);let r=i.startsWith("data:image/png;base64")?i:(0,ke.sanitizeUrl)(i);s.attr("xlink:href",r)},p0=(e,t,a)=>{let o=e.append("g"),l=0;for(let i of t){let s=i.textColor?i.textColor:"#444444",r=i.lineColor?i.lineColor:"#444444",n=i.offsetX?parseInt(i.offsetX):0,h=i.offsetY?parseInt(i.offsetY):0,f="";if(l===0){let p=o.append("line");p.attr("x1",i.startPoint.x),p.attr("y1",i.startPoint.y),p.attr("x2",i.endPoint.x),p.attr("y2",i.endPoint.y),p.attr("stroke-width","1"),p.attr("stroke",r),p.style("fill","none"),i.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(i.type==="birel"||i.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)"),l=-1}else{let p=o.append("path");p.attr("fill","none").attr("stroke-width","1").attr("stroke",r).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",i.startPoint.x).replaceAll("starty",i.startPoint.y).replaceAll("controlx",i.startPoint.x+(i.endPoint.x-i.startPoint.x)/2-(i.endPoint.x-i.startPoint.x)/4).replaceAll("controly",i.startPoint.y+(i.endPoint.y-i.startPoint.y)/2).replaceAll("stopx",i.endPoint.x).replaceAll("stopy",i.endPoint.y)),i.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(i.type==="birel"||i.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)")}let d=a.messageFont();W(a)(i.label.text,o,Math.min(i.startPoint.x,i.endPoint.x)+Math.abs(i.endPoint.x-i.startPoint.x)/2+n,Math.min(i.startPoint.y,i.endPoint.y)+Math.abs(i.endPoint.y-i.startPoint.y)/2+h,i.label.width,i.label.height,{fill:s},d),i.techn&&i.techn.text!==""&&(d=a.messageFont(),W(a)("["+i.techn.text+"]",o,Math.min(i.startPoint.x,i.endPoint.x)+Math.abs(i.endPoint.x-i.startPoint.x)/2+n,Math.min(i.startPoint.y,i.endPoint.y)+Math.abs(i.endPoint.y-i.startPoint.y)/2+a.messageFontSize+5+h,Math.max(i.label.width,i.techn.width),i.techn.height,{fill:s,"font-style":"italic"},d))}},y0=function(e,t,a){let o=e.append("g"),l=t.bgColor?t.bgColor:"none",i=t.borderColor?t.borderColor:"#444444",s=t.fontColor?t.fontColor:"black",r={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};t.nodeType&&(r={"stroke-width":1});let n={x:t.x,y:t.y,fill:l,stroke:i,width:t.width,height:t.height,rx:2.5,ry:2.5,attrs:r};le(o,n);let h=a.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,W(a)(t.label.text,o,t.x,t.y+t.label.Y,t.width,t.height,{fill:"#444444"},h),t.type&&t.type.text!==""&&(h=a.boundaryFont(),h.fontColor=s,W(a)(t.type.text,o,t.x,t.y+t.type.Y,t.width,t.height,{fill:"#444444"},h)),t.descr&&t.descr.text!==""&&(h=a.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,W(a)(t.descr.text,o,t.x,t.y+t.descr.Y,t.width,t.height,{fill:"#444444"},h))},g0=function(e,t,a){var o;let l=t.bgColor?t.bgColor:a[t.typeC4Shape.text+"_bg_color"],i=t.borderColor?t.borderColor:a[t.typeC4Shape.text+"_border_color"],s=t.fontColor?t.fontColor:"#FFFFFF",r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(t.typeC4Shape.text){case"person":r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let n=e.append("g");n.attr("class","person-man");let h=fe();switch(t.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":h.x=t.x,h.y=t.y,h.fill=l,h.width=t.width,h.height=t.height,h.stroke=i,h.rx=2.5,h.ry=2.5,h.attrs={"stroke-width":.5},le(n,h);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":n.append("path").attr("fill",l).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2).replaceAll("height",t.height)),n.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":n.append("path").attr("fill",l).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("width",t.width).replaceAll("half",t.height/2)),n.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",t.x+t.width).replaceAll("starty",t.y).replaceAll("half",t.height/2));break}let f=C0(a,t.typeC4Shape.text);switch(n.append("text").attr("fill",s).attr("font-family",f.fontFamily).attr("font-size",f.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",t.typeC4Shape.width).attr("x",t.x+t.width/2-t.typeC4Shape.width/2).attr("y",t.y+t.typeC4Shape.Y).text("<<"+t.typeC4Shape.text+">>"),t.typeC4Shape.text){case"person":case"external_person":we(n,48,48,t.x+t.width/2-24,t.y+t.image.Y,r);break}let d=a[t.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=s,W(a)(t.label.text,n,t.x,t.y+t.label.Y,t.width,t.height,{fill:s},d),d=a[t.typeC4Shape.text+"Font"](),d.fontColor=s,t.techn&&((o=t.techn)==null?void 0:o.text)!==""?W(a)(t.techn.text,n,t.x,t.y+t.techn.Y,t.width,t.height,{fill:s,"font-style":"italic"},d):t.type&&t.type.text!==""&&W(a)(t.type.text,n,t.x,t.y+t.type.Y,t.width,t.height,{fill:s,"font-style":"italic"},d),t.descr&&t.descr.text!==""&&(d=a.personFont(),d.fontColor=s,W(a)(t.descr.text,n,t.x,t.y+t.descr.Y,t.width,t.height,{fill:s},d)),t.height},b0=function(e){e.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},_0=function(e){e.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},x0=function(e){e.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},m0=function(e){e.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},E0=function(e){e.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},v0=function(e){e.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},k0=function(e){e.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},A0=function(e){let a=e.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);a.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),a.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},C0=(e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),W=function(){function e(l,i,s,r,n,h,f){let d=i.append("text").attr("x",s+n/2).attr("y",r+h/2+5).style("text-anchor","middle").text(l);o(d,f)}function t(l,i,s,r,n,h,f,d){let{fontSize:p,fontFamily:E,fontWeight:O}=d,R=l.split(Bt.lineBreakRegex);for(let S=0;S=this.data.widthLimit||o>=this.data.widthLimit||this.nextData.cnt>Oe)&&(a=this.nextData.startx+t.margin+b.nextLinePaddingX,l=this.nextData.stopy+t.margin*2,this.nextData.stopx=o=a+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=i=l+t.height,this.nextData.cnt=1),t.x=a,t.y=l,this.updateVal(this.data,"startx",a,Math.min),this.updateVal(this.data,"starty",l,Math.min),this.updateVal(this.data,"stopx",o,Math.max),this.updateVal(this.data,"stopy",i,Math.max),this.updateVal(this.nextData,"startx",a,Math.min),this.updateVal(this.nextData,"starty",l,Math.min),this.updateVal(this.nextData,"stopx",o,Math.max),this.updateVal(this.nextData,"stopy",i,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},se(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},se=function(e){pe(b,e),e.fontFamily&&(b.personFontFamily=b.systemFontFamily=b.messageFontFamily=e.fontFamily),e.fontSize&&(b.personFontSize=b.systemFontSize=b.messageFontSize=e.fontSize),e.fontWeight&&(b.personFontWeight=b.systemFontWeight=b.messageFontWeight=e.fontWeight)},St=(e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),Yt=e=>({fontFamily:e.boundaryFontFamily,fontSize:e.boundaryFontSize,fontWeight:e.boundaryFontWeight}),w0=e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight});function I(e,t,a,o,l){if(!t[e].width)if(a)t[e].text=ye(t[e].text,l,o),t[e].textLines=t[e].text.split(Bt.lineBreakRegex).length,t[e].width=l,t[e].height=ee(t[e].text,o);else{let i=t[e].text.split(Bt.lineBreakRegex);t[e].textLines=i.length;let s=0;t[e].height=0,t[e].width=0;for(let r of i)t[e].width=Math.max(At(r,o),t[e].width),s=ee(r,o),t[e].height=t[e].height+s}}var Te=function(e,t,a){t.x=a.data.startx,t.y=a.data.starty,t.width=a.data.stopx-a.data.startx,t.height=a.data.stopy-a.data.starty,t.label.y=b.c4ShapeMargin-35;let o=t.wrap&&b.wrap,l=Yt(b);l.fontSize=l.fontSize+2,l.fontWeight="bold";let i=At(t.label.text,l);I("label",t,o,l,i),F.drawBoundary(e,t,b)},Re=function(e,t,a,o){let l=0;for(let i of o){l=0;let s=a[i],r=St(b,s.typeC4Shape.text);switch(r.fontSize=r.fontSize-2,s.typeC4Shape.width=At("\xAB"+s.typeC4Shape.text+"\xBB",r),s.typeC4Shape.height=r.fontSize+2,s.typeC4Shape.Y=b.c4ShapePadding,l=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=l,l=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=l,l=s.image.Y+s.image.height);let n=s.wrap&&b.wrap,h=b.width-b.c4ShapePadding*2,f=St(b,s.typeC4Shape.text);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",I("label",s,n,f,h),s.label.Y=l+8,l=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let E=St(b,s.typeC4Shape.text);I("type",s,n,E,h),s.type.Y=l+5,l=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let E=St(b,s.techn.text);I("techn",s,n,E,h),s.techn.Y=l+5,l=s.techn.Y+s.techn.height}let d=l,p=s.label.width;if(s.descr&&s.descr.text!==""){let E=St(b,s.typeC4Shape.text);I("descr",s,n,E,h),s.descr.Y=l+20,l=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),d=l-s.descr.textLines*5}p=p+b.c4ShapePadding,s.width=Math.max(s.width||b.width,p,b.width),s.height=Math.max(s.height||b.height,d,b.height),s.margin=s.margin||b.c4ShapeMargin,e.insert(s),F.drawC4Shape(t,s,b)}e.bumpLastMargin(b.c4ShapeMargin)},L=class{constructor(t,a){this.x=t,this.y=a}},Ee=function(e,t){let a=e.x,o=e.y,l=t.x,i=t.y,s=a+e.width/2,r=o+e.height/2,n=Math.abs(a-l),h=Math.abs(o-i),f=h/n,d=e.height/e.width,p=null;return o==i&&al?p=new L(a,r):a==l&&oi&&(p=new L(s,o)),a>l&&o=f?p=new L(a,r+f*e.width/2):p=new L(s-n/h*e.height/2,o+e.height):a=f?p=new L(a+e.width,r+f*e.width/2):p=new L(s+n/h*e.height/2,o+e.height):ai?d>=f?p=new L(a+e.width,r-f*e.width/2):p=new L(s+e.height/2*n/h,o):a>l&&o>i&&(d>=f?p=new L(a,r-e.width/2*f):p=new L(s-e.height/2*n/h,o)),p},O0=function(e,t){let a={x:0,y:0};a.x=t.x+t.width/2,a.y=t.y+t.height/2;let o=Ee(e,a);a.x=e.x+e.width/2,a.y=e.y+e.height/2;let l=Ee(t,a);return{startPoint:o,endPoint:l}},T0=function(e,t,a,o){let l=0;for(let i of t){l=l+1;let s=i.wrap&&b.wrap,r=w0(b);o.db.getC4Type()==="C4Dynamic"&&(i.label.text=l+": "+i.label.text);let h=At(i.label.text,r);I("label",i,s,r,h),i.techn&&i.techn.text!==""&&(h=At(i.techn.text,r),I("techn",i,s,r,h)),i.descr&&i.descr.text!==""&&(h=At(i.descr.text,r),I("descr",i,s,r,h));let f=a(i.from),d=a(i.to),p=O0(f,d);i.startPoint=p.startPoint,i.endPoint=p.endPoint}F.drawRels(e,t,b)};function De(e,t,a,o,l){let i=new zt(l);i.data.widthLimit=a.data.widthLimit/Math.min(ne,o.length);for(let[s,r]of o.entries()){let n=0;r.image={width:0,height:0,Y:0},r.sprite&&(r.image.width=48,r.image.height=48,r.image.Y=n,n=r.image.Y+r.image.height);let h=r.wrap&&b.wrap,f=Yt(b);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",I("label",r,h,f,i.data.widthLimit),r.label.Y=n+8,n=r.label.Y+r.label.height,r.type&&r.type.text!==""){r.type.text="["+r.type.text+"]";let O=Yt(b);I("type",r,h,O,i.data.widthLimit),r.type.Y=n+5,n=r.type.Y+r.type.height}if(r.descr&&r.descr.text!==""){let O=Yt(b);O.fontSize=O.fontSize-2,I("descr",r,h,O,i.data.widthLimit),r.descr.Y=n+20,n=r.descr.Y+r.descr.height}if(s==0||s%ne===0){let O=a.data.startx+b.diagramMarginX,R=a.data.stopy+b.diagramMarginY+n;i.setData(O,O,R,R)}else{let O=i.data.stopx!==i.data.startx?i.data.stopx+b.diagramMarginX:i.data.startx,R=i.data.starty;i.setData(O,O,R,R)}i.name=r.alias;let d=l.db.getC4ShapeArray(r.alias),p=l.db.getC4ShapeKeys(r.alias);p.length>0&&Re(i,e,d,p),t=r.alias;let E=l.db.getBoundarys(t);E.length>0&&De(e,t,i,E,l),r.alias!=="global"&&Te(e,r,i),a.data.stopy=Math.max(i.data.stopy+b.c4ShapeMargin,a.data.stopy),a.data.stopx=Math.max(i.data.stopx+b.c4ShapeMargin,a.data.stopx),Ft=Math.max(Ft,a.data.stopx),Vt=Math.max(Vt,a.data.stopy)}}var R0=function(e,t,a,o){b=Ot().c4;let l=Ot().securityLevel,i;l==="sandbox"&&(i=Dt("#i"+t));let s=l==="sandbox"?Dt(i.nodes()[0].contentDocument.body):Dt("body"),r=o.db;o.db.setWrap(b.wrap),Oe=r.getC4ShapeInRow(),ne=r.getC4BoundaryInRow(),$t.debug(`C:${JSON.stringify(b,null,2)}`);let n=l==="sandbox"?s.select(`[id="${t}"]`):Dt(`[id="${t}"]`);F.insertComputerIcon(n),F.insertDatabaseIcon(n),F.insertClockIcon(n);let h=new zt(o);h.setData(b.diagramMarginX,b.diagramMarginX,b.diagramMarginY,b.diagramMarginY),h.data.widthLimit=screen.availWidth,Ft=b.diagramMarginX,Vt=b.diagramMarginY;let f=o.db.getTitle(),d=o.db.getBoundarys("");De(n,"",h,d,o),F.insertArrowHead(n),F.insertArrowEnd(n),F.insertArrowCrossHead(n),F.insertArrowFilledHead(n),T0(n,o.db.getRels(),o.db.getC4Shape,o),h.data.stopx=Ft,h.data.stopy=Vt;let p=h.data,O=p.stopy-p.starty+2*b.diagramMarginY,S=p.stopx-p.startx+2*b.diagramMarginX;f&&n.append("text").text(f).attr("x",(p.stopx-p.startx)/2-4*b.diagramMarginX).attr("y",p.starty+b.diagramMarginY),ge(n,O,S,b.useMaxWidth);let N=f?60:0;n.attr("viewBox",p.startx-b.diagramMarginX+" -"+(b.diagramMarginY+N)+" "+S+" "+(O+N)),$t.debug("models:",p)},ve={drawPersonOrSystemArray:Re,drawBoundary:Te,setConf:se,draw:R0},D0=e=>`.person { + stroke: ${e.personBorder}; + fill: ${e.personBkg}; + } +`,S0=D0,I0={parser:je,db:ie,renderer:ve,styles:S0,init:({c4:e,wrap:t})=>{ve.setConf(e),ie.setWrap(t)}};export{I0 as diagram}; +//# sourceMappingURL=c4Diagram-7e558229-ESOFQEAK.min.js.map diff --git a/public/c4Diagram-7e558229-ESOFQEAK.min.js.map b/public/c4Diagram-7e558229-ESOFQEAK.min.js.map new file mode 100644 index 0000000..c8de377 --- /dev/null +++ b/public/c4Diagram-7e558229-ESOFQEAK.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/mermaid/dist/c4Diagram-7e558229.js"], + "sourcesContent": ["import { s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, c as getConfig, d as sanitizeText, e as common, f as assignWithDepth, h as calculateTextWidth, l as log, i as configureSvgSize, w as wrapLabel, j as calculateTextHeight } from \"./mermaid-485fd1a4.js\";\nimport { select } from \"d3\";\nimport { d as drawRect$1, g as getNoteRect } from \"./svgDrawCommon-43c67fcf.js\";\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 24], $V1 = [1, 25], $V2 = [1, 26], $V3 = [1, 27], $V4 = [1, 28], $V5 = [1, 63], $V6 = [1, 64], $V7 = [1, 65], $V8 = [1, 66], $V9 = [1, 67], $Va = [1, 68], $Vb = [1, 69], $Vc = [1, 29], $Vd = [1, 30], $Ve = [1, 31], $Vf = [1, 32], $Vg = [1, 33], $Vh = [1, 34], $Vi = [1, 35], $Vj = [1, 36], $Vk = [1, 37], $Vl = [1, 38], $Vm = [1, 39], $Vn = [1, 40], $Vo = [1, 41], $Vp = [1, 42], $Vq = [1, 43], $Vr = [1, 44], $Vs = [1, 45], $Vt = [1, 46], $Vu = [1, 47], $Vv = [1, 48], $Vw = [1, 50], $Vx = [1, 51], $Vy = [1, 52], $Vz = [1, 53], $VA = [1, 54], $VB = [1, 55], $VC = [1, 56], $VD = [1, 57], $VE = [1, 58], $VF = [1, 59], $VG = [1, 60], $VH = [14, 42], $VI = [14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], $VJ = [12, 14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], $VK = [1, 82], $VL = [1, 83], $VM = [1, 84], $VN = [1, 85], $VO = [12, 14, 42], $VP = [12, 14, 33, 42], $VQ = [12, 14, 33, 42, 76, 77, 79, 80], $VR = [12, 33], $VS = [34, 36, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"direction\": 5, \"direction_tb\": 6, \"direction_bt\": 7, \"direction_rl\": 8, \"direction_lr\": 9, \"graphConfig\": 10, \"C4_CONTEXT\": 11, \"NEWLINE\": 12, \"statements\": 13, \"EOF\": 14, \"C4_CONTAINER\": 15, \"C4_COMPONENT\": 16, \"C4_DYNAMIC\": 17, \"C4_DEPLOYMENT\": 18, \"otherStatements\": 19, \"diagramStatements\": 20, \"otherStatement\": 21, \"title\": 22, \"accDescription\": 23, \"acc_title\": 24, \"acc_title_value\": 25, \"acc_descr\": 26, \"acc_descr_value\": 27, \"acc_descr_multiline_value\": 28, \"boundaryStatement\": 29, \"boundaryStartStatement\": 30, \"boundaryStopStatement\": 31, \"boundaryStart\": 32, \"LBRACE\": 33, \"ENTERPRISE_BOUNDARY\": 34, \"attributes\": 35, \"SYSTEM_BOUNDARY\": 36, \"BOUNDARY\": 37, \"CONTAINER_BOUNDARY\": 38, \"NODE\": 39, \"NODE_L\": 40, \"NODE_R\": 41, \"RBRACE\": 42, \"diagramStatement\": 43, \"PERSON\": 44, \"PERSON_EXT\": 45, \"SYSTEM\": 46, \"SYSTEM_DB\": 47, \"SYSTEM_QUEUE\": 48, \"SYSTEM_EXT\": 49, \"SYSTEM_EXT_DB\": 50, \"SYSTEM_EXT_QUEUE\": 51, \"CONTAINER\": 52, \"CONTAINER_DB\": 53, \"CONTAINER_QUEUE\": 54, \"CONTAINER_EXT\": 55, \"CONTAINER_EXT_DB\": 56, \"CONTAINER_EXT_QUEUE\": 57, \"COMPONENT\": 58, \"COMPONENT_DB\": 59, \"COMPONENT_QUEUE\": 60, \"COMPONENT_EXT\": 61, \"COMPONENT_EXT_DB\": 62, \"COMPONENT_EXT_QUEUE\": 63, \"REL\": 64, \"BIREL\": 65, \"REL_U\": 66, \"REL_D\": 67, \"REL_L\": 68, \"REL_R\": 69, \"REL_B\": 70, \"REL_INDEX\": 71, \"UPDATE_EL_STYLE\": 72, \"UPDATE_REL_STYLE\": 73, \"UPDATE_LAYOUT_CONFIG\": 74, \"attribute\": 75, \"STR\": 76, \"STR_KEY\": 77, \"STR_VALUE\": 78, \"ATTRIBUTE\": 79, \"ATTRIBUTE_EMPTY\": 80, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 6: \"direction_tb\", 7: \"direction_bt\", 8: \"direction_rl\", 9: \"direction_lr\", 11: \"C4_CONTEXT\", 12: \"NEWLINE\", 14: \"EOF\", 15: \"C4_CONTAINER\", 16: \"C4_COMPONENT\", 17: \"C4_DYNAMIC\", 18: \"C4_DEPLOYMENT\", 22: \"title\", 23: \"accDescription\", 24: \"acc_title\", 25: \"acc_title_value\", 26: \"acc_descr\", 27: \"acc_descr_value\", 28: \"acc_descr_multiline_value\", 33: \"LBRACE\", 34: \"ENTERPRISE_BOUNDARY\", 36: \"SYSTEM_BOUNDARY\", 37: \"BOUNDARY\", 38: \"CONTAINER_BOUNDARY\", 39: \"NODE\", 40: \"NODE_L\", 41: \"NODE_R\", 42: \"RBRACE\", 44: \"PERSON\", 45: \"PERSON_EXT\", 46: \"SYSTEM\", 47: \"SYSTEM_DB\", 48: \"SYSTEM_QUEUE\", 49: \"SYSTEM_EXT\", 50: \"SYSTEM_EXT_DB\", 51: \"SYSTEM_EXT_QUEUE\", 52: \"CONTAINER\", 53: \"CONTAINER_DB\", 54: \"CONTAINER_QUEUE\", 55: \"CONTAINER_EXT\", 56: \"CONTAINER_EXT_DB\", 57: \"CONTAINER_EXT_QUEUE\", 58: \"COMPONENT\", 59: \"COMPONENT_DB\", 60: \"COMPONENT_QUEUE\", 61: \"COMPONENT_EXT\", 62: \"COMPONENT_EXT_DB\", 63: \"COMPONENT_EXT_QUEUE\", 64: \"REL\", 65: \"BIREL\", 66: \"REL_U\", 67: \"REL_D\", 68: \"REL_L\", 69: \"REL_R\", 70: \"REL_B\", 71: \"REL_INDEX\", 72: \"UPDATE_EL_STYLE\", 73: \"UPDATE_REL_STYLE\", 74: \"UPDATE_LAYOUT_CONFIG\", 76: \"STR\", 77: \"STR_KEY\", 78: \"STR_VALUE\", 79: \"ATTRIBUTE\", 80: \"ATTRIBUTE_EMPTY\" },\n productions_: [0, [3, 1], [3, 1], [5, 1], [5, 1], [5, 1], [5, 1], [4, 1], [10, 4], [10, 4], [10, 4], [10, 4], [10, 4], [13, 1], [13, 1], [13, 2], [19, 1], [19, 2], [19, 3], [21, 1], [21, 1], [21, 2], [21, 2], [21, 1], [29, 3], [30, 3], [30, 3], [30, 4], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [31, 1], [20, 1], [20, 2], [20, 3], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 1], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [35, 1], [35, 2], [75, 1], [75, 2], [75, 1], [75, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n yy.setDirection(\"TB\");\n break;\n case 4:\n yy.setDirection(\"BT\");\n break;\n case 5:\n yy.setDirection(\"RL\");\n break;\n case 6:\n yy.setDirection(\"LR\");\n break;\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n yy.setC4Type($$[$0 - 3]);\n break;\n case 19:\n yy.setTitle($$[$0].substring(6));\n this.$ = $$[$0].substring(6);\n break;\n case 20:\n yy.setAccDescription($$[$0].substring(15));\n this.$ = $$[$0].substring(15);\n break;\n case 21:\n this.$ = $$[$0].trim();\n yy.setTitle(this.$);\n break;\n case 22:\n case 23:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 28:\n case 29:\n $$[$0].splice(2, 0, \"ENTERPRISE\");\n yy.addPersonOrSystemBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 30:\n yy.addPersonOrSystemBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 31:\n $$[$0].splice(2, 0, \"CONTAINER\");\n yy.addContainerBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 32:\n yy.addDeploymentNode(\"node\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 33:\n yy.addDeploymentNode(\"nodeL\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 34:\n yy.addDeploymentNode(\"nodeR\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 35:\n yy.popBoundaryParseStack();\n break;\n case 39:\n yy.addPersonOrSystem(\"person\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 40:\n yy.addPersonOrSystem(\"external_person\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 41:\n yy.addPersonOrSystem(\"system\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 42:\n yy.addPersonOrSystem(\"system_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 43:\n yy.addPersonOrSystem(\"system_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 44:\n yy.addPersonOrSystem(\"external_system\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 45:\n yy.addPersonOrSystem(\"external_system_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 46:\n yy.addPersonOrSystem(\"external_system_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 47:\n yy.addContainer(\"container\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 48:\n yy.addContainer(\"container_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 49:\n yy.addContainer(\"container_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 50:\n yy.addContainer(\"external_container\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 51:\n yy.addContainer(\"external_container_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 52:\n yy.addContainer(\"external_container_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 53:\n yy.addComponent(\"component\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 54:\n yy.addComponent(\"component_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 55:\n yy.addComponent(\"component_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 56:\n yy.addComponent(\"external_component\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 57:\n yy.addComponent(\"external_component_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 58:\n yy.addComponent(\"external_component_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 60:\n yy.addRel(\"rel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 61:\n yy.addRel(\"birel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 62:\n yy.addRel(\"rel_u\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 63:\n yy.addRel(\"rel_d\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 64:\n yy.addRel(\"rel_l\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 65:\n yy.addRel(\"rel_r\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 66:\n yy.addRel(\"rel_b\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 67:\n $$[$0].splice(0, 1);\n yy.addRel(\"rel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 68:\n yy.updateElStyle(\"update_el_style\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 69:\n yy.updateRelStyle(\"update_rel_style\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 70:\n yy.updateLayoutConfig(\"update_layout_config\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 71:\n this.$ = [$$[$0]];\n break;\n case 72:\n $$[$0].unshift($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 73:\n case 75:\n this.$ = $$[$0].trim();\n break;\n case 74:\n let kv = {};\n kv[$$[$0 - 1].trim()] = $$[$0].trim();\n this.$ = kv;\n break;\n case 76:\n this.$ = \"\";\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 7: [1, 6], 8: [1, 7], 9: [1, 8], 10: 4, 11: [1, 9], 15: [1, 10], 16: [1, 11], 17: [1, 12], 18: [1, 13] }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 7] }, { 1: [2, 3] }, { 1: [2, 4] }, { 1: [2, 5] }, { 1: [2, 6] }, { 12: [1, 14] }, { 12: [1, 15] }, { 12: [1, 16] }, { 12: [1, 17] }, { 12: [1, 18] }, { 13: 19, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 70, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 71, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 72, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 73, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 14: [1, 74] }, o($VH, [2, 13], { 43: 23, 29: 49, 30: 61, 32: 62, 20: 75, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o($VH, [2, 14]), o($VI, [2, 16], { 12: [1, 76] }), o($VH, [2, 36], { 12: [1, 77] }), o($VJ, [2, 19]), o($VJ, [2, 20]), { 25: [1, 78] }, { 27: [1, 79] }, o($VJ, [2, 23]), { 35: 80, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 86, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 87, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 88, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 89, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 90, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 91, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 92, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 93, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 94, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 95, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 96, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 97, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 98, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 99, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 100, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 101, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 102, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 103, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 104, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, o($VO, [2, 59]), { 35: 105, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 106, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 107, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 108, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 109, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 110, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 111, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 112, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 113, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 114, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 115, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 20: 116, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 12: [1, 118], 33: [1, 117] }, { 35: 119, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 120, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 121, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 122, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 123, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 124, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 125, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 14: [1, 126] }, { 14: [1, 127] }, { 14: [1, 128] }, { 14: [1, 129] }, { 1: [2, 8] }, o($VH, [2, 15]), o($VI, [2, 17], { 21: 22, 19: 130, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4 }), o($VH, [2, 37], { 19: 20, 20: 21, 21: 22, 43: 23, 29: 49, 30: 61, 32: 62, 13: 131, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o($VJ, [2, 21]), o($VJ, [2, 22]), o($VO, [2, 39]), o($VP, [2, 71], { 75: 81, 35: 132, 76: $VK, 77: $VL, 79: $VM, 80: $VN }), o($VQ, [2, 73]), { 78: [1, 133] }, o($VQ, [2, 75]), o($VQ, [2, 76]), o($VO, [2, 40]), o($VO, [2, 41]), o($VO, [2, 42]), o($VO, [2, 43]), o($VO, [2, 44]), o($VO, [2, 45]), o($VO, [2, 46]), o($VO, [2, 47]), o($VO, [2, 48]), o($VO, [2, 49]), o($VO, [2, 50]), o($VO, [2, 51]), o($VO, [2, 52]), o($VO, [2, 53]), o($VO, [2, 54]), o($VO, [2, 55]), o($VO, [2, 56]), o($VO, [2, 57]), o($VO, [2, 58]), o($VO, [2, 60]), o($VO, [2, 61]), o($VO, [2, 62]), o($VO, [2, 63]), o($VO, [2, 64]), o($VO, [2, 65]), o($VO, [2, 66]), o($VO, [2, 67]), o($VO, [2, 68]), o($VO, [2, 69]), o($VO, [2, 70]), { 31: 134, 42: [1, 135] }, { 12: [1, 136] }, { 33: [1, 137] }, o($VR, [2, 28]), o($VR, [2, 29]), o($VR, [2, 30]), o($VR, [2, 31]), o($VR, [2, 32]), o($VR, [2, 33]), o($VR, [2, 34]), { 1: [2, 9] }, { 1: [2, 10] }, { 1: [2, 11] }, { 1: [2, 12] }, o($VI, [2, 18]), o($VH, [2, 38]), o($VP, [2, 72]), o($VQ, [2, 74]), o($VO, [2, 24]), o($VO, [2, 35]), o($VS, [2, 25]), o($VS, [2, 26], { 12: [1, 138] }), o($VS, [2, 27])],\n defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 7], 5: [2, 3], 6: [2, 4], 7: [2, 5], 8: [2, 6], 74: [2, 8], 126: [2, 9], 127: [2, 10], 128: [2, 11], 129: [2, 12] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c2 = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c2 + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 6;\n case 1:\n return 7;\n case 2:\n return 8;\n case 3:\n return 9;\n case 4:\n return 22;\n case 5:\n return 23;\n case 6:\n this.begin(\"acc_title\");\n return 24;\n case 7:\n this.popState();\n return \"acc_title_value\";\n case 8:\n this.begin(\"acc_descr\");\n return 26;\n case 9:\n this.popState();\n return \"acc_descr_value\";\n case 10:\n this.begin(\"acc_descr_multiline\");\n break;\n case 11:\n this.popState();\n break;\n case 12:\n return \"acc_descr_multiline_value\";\n case 13:\n break;\n case 14:\n c;\n break;\n case 15:\n return 12;\n case 16:\n break;\n case 17:\n return 11;\n case 18:\n return 15;\n case 19:\n return 16;\n case 20:\n return 17;\n case 21:\n return 18;\n case 22:\n this.begin(\"person_ext\");\n return 45;\n case 23:\n this.begin(\"person\");\n return 44;\n case 24:\n this.begin(\"system_ext_queue\");\n return 51;\n case 25:\n this.begin(\"system_ext_db\");\n return 50;\n case 26:\n this.begin(\"system_ext\");\n return 49;\n case 27:\n this.begin(\"system_queue\");\n return 48;\n case 28:\n this.begin(\"system_db\");\n return 47;\n case 29:\n this.begin(\"system\");\n return 46;\n case 30:\n this.begin(\"boundary\");\n return 37;\n case 31:\n this.begin(\"enterprise_boundary\");\n return 34;\n case 32:\n this.begin(\"system_boundary\");\n return 36;\n case 33:\n this.begin(\"container_ext_queue\");\n return 57;\n case 34:\n this.begin(\"container_ext_db\");\n return 56;\n case 35:\n this.begin(\"container_ext\");\n return 55;\n case 36:\n this.begin(\"container_queue\");\n return 54;\n case 37:\n this.begin(\"container_db\");\n return 53;\n case 38:\n this.begin(\"container\");\n return 52;\n case 39:\n this.begin(\"container_boundary\");\n return 38;\n case 40:\n this.begin(\"component_ext_queue\");\n return 63;\n case 41:\n this.begin(\"component_ext_db\");\n return 62;\n case 42:\n this.begin(\"component_ext\");\n return 61;\n case 43:\n this.begin(\"component_queue\");\n return 60;\n case 44:\n this.begin(\"component_db\");\n return 59;\n case 45:\n this.begin(\"component\");\n return 58;\n case 46:\n this.begin(\"node\");\n return 39;\n case 47:\n this.begin(\"node\");\n return 39;\n case 48:\n this.begin(\"node_l\");\n return 40;\n case 49:\n this.begin(\"node_r\");\n return 41;\n case 50:\n this.begin(\"rel\");\n return 64;\n case 51:\n this.begin(\"birel\");\n return 65;\n case 52:\n this.begin(\"rel_u\");\n return 66;\n case 53:\n this.begin(\"rel_u\");\n return 66;\n case 54:\n this.begin(\"rel_d\");\n return 67;\n case 55:\n this.begin(\"rel_d\");\n return 67;\n case 56:\n this.begin(\"rel_l\");\n return 68;\n case 57:\n this.begin(\"rel_l\");\n return 68;\n case 58:\n this.begin(\"rel_r\");\n return 69;\n case 59:\n this.begin(\"rel_r\");\n return 69;\n case 60:\n this.begin(\"rel_b\");\n return 70;\n case 61:\n this.begin(\"rel_index\");\n return 71;\n case 62:\n this.begin(\"update_el_style\");\n return 72;\n case 63:\n this.begin(\"update_rel_style\");\n return 73;\n case 64:\n this.begin(\"update_layout_config\");\n return 74;\n case 65:\n return \"EOF_IN_STRUCT\";\n case 66:\n this.begin(\"attribute\");\n return \"ATTRIBUTE_EMPTY\";\n case 67:\n this.begin(\"attribute\");\n break;\n case 68:\n this.popState();\n this.popState();\n break;\n case 69:\n return 80;\n case 70:\n break;\n case 71:\n return 80;\n case 72:\n this.begin(\"string\");\n break;\n case 73:\n this.popState();\n break;\n case 74:\n return \"STR\";\n case 75:\n this.begin(\"string_kv\");\n break;\n case 76:\n this.begin(\"string_kv_key\");\n return \"STR_KEY\";\n case 77:\n this.popState();\n this.begin(\"string_kv_value\");\n break;\n case 78:\n return \"STR_VALUE\";\n case 79:\n this.popState();\n this.popState();\n break;\n case 80:\n return \"STR\";\n case 81:\n return \"LBRACE\";\n case 82:\n return \"RBRACE\";\n case 83:\n return \"SPACE\";\n case 84:\n return \"EOL\";\n case 85:\n return 14;\n }\n },\n rules: [/^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:title\\s[^#\\n;]+)/, /^(?:accDescription\\s[^#\\n;]+)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/, /^(?:%%[^\\n]*(\\r?\\n)*)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:C4Context\\b)/, /^(?:C4Container\\b)/, /^(?:C4Component\\b)/, /^(?:C4Dynamic\\b)/, /^(?:C4Deployment\\b)/, /^(?:Person_Ext\\b)/, /^(?:Person\\b)/, /^(?:SystemQueue_Ext\\b)/, /^(?:SystemDb_Ext\\b)/, /^(?:System_Ext\\b)/, /^(?:SystemQueue\\b)/, /^(?:SystemDb\\b)/, /^(?:System\\b)/, /^(?:Boundary\\b)/, /^(?:Enterprise_Boundary\\b)/, /^(?:System_Boundary\\b)/, /^(?:ContainerQueue_Ext\\b)/, /^(?:ContainerDb_Ext\\b)/, /^(?:Container_Ext\\b)/, /^(?:ContainerQueue\\b)/, /^(?:ContainerDb\\b)/, /^(?:Container\\b)/, /^(?:Container_Boundary\\b)/, /^(?:ComponentQueue_Ext\\b)/, /^(?:ComponentDb_Ext\\b)/, /^(?:Component_Ext\\b)/, /^(?:ComponentQueue\\b)/, /^(?:ComponentDb\\b)/, /^(?:Component\\b)/, /^(?:Deployment_Node\\b)/, /^(?:Node\\b)/, /^(?:Node_L\\b)/, /^(?:Node_R\\b)/, /^(?:Rel\\b)/, /^(?:BiRel\\b)/, /^(?:Rel_Up\\b)/, /^(?:Rel_U\\b)/, /^(?:Rel_Down\\b)/, /^(?:Rel_D\\b)/, /^(?:Rel_Left\\b)/, /^(?:Rel_L\\b)/, /^(?:Rel_Right\\b)/, /^(?:Rel_R\\b)/, /^(?:Rel_Back\\b)/, /^(?:RelIndex\\b)/, /^(?:UpdateElementStyle\\b)/, /^(?:UpdateRelStyle\\b)/, /^(?:UpdateLayoutConfig\\b)/, /^(?:$)/, /^(?:[(][ ]*[,])/, /^(?:[(])/, /^(?:[)])/, /^(?:,,)/, /^(?:,)/, /^(?:[ ]*[\"][\"])/, /^(?:[ ]*[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:[ ]*[\\$])/, /^(?:[^=]*)/, /^(?:[=][ ]*[\"])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:[^,]+)/, /^(?:\\{)/, /^(?:\\})/, /^(?:[\\s]+)/, /^(?:[\\n\\r]+)/, /^(?:$)/],\n conditions: { \"acc_descr_multiline\": { \"rules\": [11, 12], \"inclusive\": false }, \"acc_descr\": { \"rules\": [9], \"inclusive\": false }, \"acc_title\": { \"rules\": [7], \"inclusive\": false }, \"string_kv_value\": { \"rules\": [78, 79], \"inclusive\": false }, \"string_kv_key\": { \"rules\": [77], \"inclusive\": false }, \"string_kv\": { \"rules\": [76], \"inclusive\": false }, \"string\": { \"rules\": [73, 74], \"inclusive\": false }, \"attribute\": { \"rules\": [68, 69, 70, 71, 72, 75, 80], \"inclusive\": false }, \"update_layout_config\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"update_rel_style\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"update_el_style\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_b\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_r\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_l\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_d\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_u\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_bi\": { \"rules\": [], \"inclusive\": false }, \"rel\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node_r\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node_l\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"index\": { \"rules\": [], \"inclusive\": false }, \"rel_index\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_ext_queue\": { \"rules\": [], \"inclusive\": false }, \"component_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"birel\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"enterprise_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"person_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"person\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 81, 82, 83, 84, 85], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet c4ShapeArray = [];\nlet boundaryParseStack = [\"\"];\nlet currentBoundaryParse = \"global\";\nlet parentBoundaryParse = \"\";\nlet boundarys = [\n {\n alias: \"global\",\n label: { text: \"global\" },\n type: { text: \"global\" },\n tags: null,\n link: null,\n parentBoundary: \"\"\n }\n];\nlet rels = [];\nlet title = \"\";\nlet wrapEnabled = false;\nlet c4ShapeInRow$1 = 4;\nlet c4BoundaryInRow$1 = 2;\nvar c4Type;\nconst getC4Type = function() {\n return c4Type;\n};\nconst setC4Type = function(c4TypeParam) {\n let sanitizedText = sanitizeText(c4TypeParam, getConfig());\n c4Type = sanitizedText;\n};\nconst addRel = function(type, from, to, label, techn, descr, sprite, tags, link) {\n if (type === void 0 || type === null || from === void 0 || from === null || to === void 0 || to === null || label === void 0 || label === null) {\n return;\n }\n let rel = {};\n const old = rels.find((rel2) => rel2.from === from && rel2.to === to);\n if (old) {\n rel = old;\n } else {\n rels.push(rel);\n }\n rel.type = type;\n rel.from = from;\n rel.to = to;\n rel.label = { text: label };\n if (techn === void 0 || techn === null) {\n rel.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n rel[key] = { text: value };\n } else {\n rel.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n rel.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n rel[key] = { text: value };\n } else {\n rel.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n rel[key] = value;\n } else {\n rel.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n rel[key] = value;\n } else {\n rel.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n rel[key] = value;\n } else {\n rel.link = link;\n }\n rel.wrap = autoWrap();\n};\nconst addPersonOrSystem = function(typeC4Shape, alias, label, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let personOrSystem = {};\n const old = c4ShapeArray.find((personOrSystem2) => personOrSystem2.alias === alias);\n if (old && alias === old.alias) {\n personOrSystem = old;\n } else {\n personOrSystem.alias = alias;\n c4ShapeArray.push(personOrSystem);\n }\n if (label === void 0 || label === null) {\n personOrSystem.label = { text: \"\" };\n } else {\n personOrSystem.label = { text: label };\n }\n if (descr === void 0 || descr === null) {\n personOrSystem.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n personOrSystem[key] = { text: value };\n } else {\n personOrSystem.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.link = link;\n }\n personOrSystem.typeC4Shape = { text: typeC4Shape };\n personOrSystem.parentBoundary = currentBoundaryParse;\n personOrSystem.wrap = autoWrap();\n};\nconst addContainer = function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let container = {};\n const old = c4ShapeArray.find((container2) => container2.alias === alias);\n if (old && alias === old.alias) {\n container = old;\n } else {\n container.alias = alias;\n c4ShapeArray.push(container);\n }\n if (label === void 0 || label === null) {\n container.label = { text: \"\" };\n } else {\n container.label = { text: label };\n }\n if (techn === void 0 || techn === null) {\n container.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n container[key] = { text: value };\n } else {\n container.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n container.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n container[key] = { text: value };\n } else {\n container.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n container[key] = value;\n } else {\n container.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n container[key] = value;\n } else {\n container.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n container[key] = value;\n } else {\n container.link = link;\n }\n container.wrap = autoWrap();\n container.typeC4Shape = { text: typeC4Shape };\n container.parentBoundary = currentBoundaryParse;\n};\nconst addComponent = function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let component = {};\n const old = c4ShapeArray.find((component2) => component2.alias === alias);\n if (old && alias === old.alias) {\n component = old;\n } else {\n component.alias = alias;\n c4ShapeArray.push(component);\n }\n if (label === void 0 || label === null) {\n component.label = { text: \"\" };\n } else {\n component.label = { text: label };\n }\n if (techn === void 0 || techn === null) {\n component.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n component[key] = { text: value };\n } else {\n component.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n component.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n component[key] = { text: value };\n } else {\n component.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n component[key] = value;\n } else {\n component.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n component[key] = value;\n } else {\n component.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n component[key] = value;\n } else {\n component.link = link;\n }\n component.wrap = autoWrap();\n component.typeC4Shape = { text: typeC4Shape };\n component.parentBoundary = currentBoundaryParse;\n};\nconst addPersonOrSystemBoundary = function(alias, label, type, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"system\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst addContainerBoundary = function(alias, label, type, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"container\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst addDeploymentNode = function(nodeType, alias, label, type, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"node\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (descr === void 0 || descr === null) {\n boundary.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n boundary[key] = { text: value };\n } else {\n boundary.descr = { text: descr };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.nodeType = nodeType;\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst popBoundaryParseStack = function() {\n currentBoundaryParse = parentBoundaryParse;\n boundaryParseStack.pop();\n parentBoundaryParse = boundaryParseStack.pop();\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst updateElStyle = function(typeC4Shape, elementName, bgColor, fontColor, borderColor, shadowing, shape, sprite, techn, legendText, legendSprite) {\n let old = c4ShapeArray.find((element) => element.alias === elementName);\n if (old === void 0) {\n old = boundarys.find((element) => element.alias === elementName);\n if (old === void 0) {\n return;\n }\n }\n if (bgColor !== void 0 && bgColor !== null) {\n if (typeof bgColor === \"object\") {\n let [key, value] = Object.entries(bgColor)[0];\n old[key] = value;\n } else {\n old.bgColor = bgColor;\n }\n }\n if (fontColor !== void 0 && fontColor !== null) {\n if (typeof fontColor === \"object\") {\n let [key, value] = Object.entries(fontColor)[0];\n old[key] = value;\n } else {\n old.fontColor = fontColor;\n }\n }\n if (borderColor !== void 0 && borderColor !== null) {\n if (typeof borderColor === \"object\") {\n let [key, value] = Object.entries(borderColor)[0];\n old[key] = value;\n } else {\n old.borderColor = borderColor;\n }\n }\n if (shadowing !== void 0 && shadowing !== null) {\n if (typeof shadowing === \"object\") {\n let [key, value] = Object.entries(shadowing)[0];\n old[key] = value;\n } else {\n old.shadowing = shadowing;\n }\n }\n if (shape !== void 0 && shape !== null) {\n if (typeof shape === \"object\") {\n let [key, value] = Object.entries(shape)[0];\n old[key] = value;\n } else {\n old.shape = shape;\n }\n }\n if (sprite !== void 0 && sprite !== null) {\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n old[key] = value;\n } else {\n old.sprite = sprite;\n }\n }\n if (techn !== void 0 && techn !== null) {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n old[key] = value;\n } else {\n old.techn = techn;\n }\n }\n if (legendText !== void 0 && legendText !== null) {\n if (typeof legendText === \"object\") {\n let [key, value] = Object.entries(legendText)[0];\n old[key] = value;\n } else {\n old.legendText = legendText;\n }\n }\n if (legendSprite !== void 0 && legendSprite !== null) {\n if (typeof legendSprite === \"object\") {\n let [key, value] = Object.entries(legendSprite)[0];\n old[key] = value;\n } else {\n old.legendSprite = legendSprite;\n }\n }\n};\nconst updateRelStyle = function(typeC4Shape, from, to, textColor, lineColor, offsetX, offsetY) {\n const old = rels.find((rel) => rel.from === from && rel.to === to);\n if (old === void 0) {\n return;\n }\n if (textColor !== void 0 && textColor !== null) {\n if (typeof textColor === \"object\") {\n let [key, value] = Object.entries(textColor)[0];\n old[key] = value;\n } else {\n old.textColor = textColor;\n }\n }\n if (lineColor !== void 0 && lineColor !== null) {\n if (typeof lineColor === \"object\") {\n let [key, value] = Object.entries(lineColor)[0];\n old[key] = value;\n } else {\n old.lineColor = lineColor;\n }\n }\n if (offsetX !== void 0 && offsetX !== null) {\n if (typeof offsetX === \"object\") {\n let [key, value] = Object.entries(offsetX)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetX = parseInt(offsetX);\n }\n }\n if (offsetY !== void 0 && offsetY !== null) {\n if (typeof offsetY === \"object\") {\n let [key, value] = Object.entries(offsetY)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetY = parseInt(offsetY);\n }\n }\n};\nconst updateLayoutConfig = function(typeC4Shape, c4ShapeInRowParam, c4BoundaryInRowParam) {\n let c4ShapeInRowValue = c4ShapeInRow$1;\n let c4BoundaryInRowValue = c4BoundaryInRow$1;\n if (typeof c4ShapeInRowParam === \"object\") {\n const value = Object.values(c4ShapeInRowParam)[0];\n c4ShapeInRowValue = parseInt(value);\n } else {\n c4ShapeInRowValue = parseInt(c4ShapeInRowParam);\n }\n if (typeof c4BoundaryInRowParam === \"object\") {\n const value = Object.values(c4BoundaryInRowParam)[0];\n c4BoundaryInRowValue = parseInt(value);\n } else {\n c4BoundaryInRowValue = parseInt(c4BoundaryInRowParam);\n }\n if (c4ShapeInRowValue >= 1) {\n c4ShapeInRow$1 = c4ShapeInRowValue;\n }\n if (c4BoundaryInRowValue >= 1) {\n c4BoundaryInRow$1 = c4BoundaryInRowValue;\n }\n};\nconst getC4ShapeInRow = function() {\n return c4ShapeInRow$1;\n};\nconst getC4BoundaryInRow = function() {\n return c4BoundaryInRow$1;\n};\nconst getCurrentBoundaryParse = function() {\n return currentBoundaryParse;\n};\nconst getParentBoundaryParse = function() {\n return parentBoundaryParse;\n};\nconst getC4ShapeArray = function(parentBoundary) {\n if (parentBoundary === void 0 || parentBoundary === null) {\n return c4ShapeArray;\n } else {\n return c4ShapeArray.filter((personOrSystem) => {\n return personOrSystem.parentBoundary === parentBoundary;\n });\n }\n};\nconst getC4Shape = function(alias) {\n return c4ShapeArray.find((personOrSystem) => personOrSystem.alias === alias);\n};\nconst getC4ShapeKeys = function(parentBoundary) {\n return Object.keys(getC4ShapeArray(parentBoundary));\n};\nconst getBoundarys = function(parentBoundary) {\n if (parentBoundary === void 0 || parentBoundary === null) {\n return boundarys;\n } else {\n return boundarys.filter((boundary) => boundary.parentBoundary === parentBoundary);\n }\n};\nconst getRels = function() {\n return rels;\n};\nconst getTitle = function() {\n return title;\n};\nconst setWrap = function(wrapSetting) {\n wrapEnabled = wrapSetting;\n};\nconst autoWrap = function() {\n return wrapEnabled;\n};\nconst clear = function() {\n c4ShapeArray = [];\n boundarys = [\n {\n alias: \"global\",\n label: { text: \"global\" },\n type: { text: \"global\" },\n tags: null,\n link: null,\n parentBoundary: \"\"\n }\n ];\n parentBoundaryParse = \"\";\n currentBoundaryParse = \"global\";\n boundaryParseStack = [\"\"];\n rels = [];\n boundaryParseStack = [\"\"];\n title = \"\";\n wrapEnabled = false;\n c4ShapeInRow$1 = 4;\n c4BoundaryInRow$1 = 2;\n};\nconst LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25\n};\nconst ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\nconst PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\nconst setTitle = function(txt) {\n let sanitizedText = sanitizeText(txt, getConfig());\n title = sanitizedText;\n};\nconst db = {\n addPersonOrSystem,\n addPersonOrSystemBoundary,\n addContainer,\n addContainerBoundary,\n addComponent,\n addDeploymentNode,\n popBoundaryParseStack,\n addRel,\n updateElStyle,\n updateRelStyle,\n updateLayoutConfig,\n autoWrap,\n setWrap,\n getC4ShapeArray,\n getC4Shape,\n getC4ShapeKeys,\n getBoundarys,\n getCurrentBoundaryParse,\n getParentBoundaryParse,\n getRels,\n getTitle,\n getC4Type,\n getC4ShapeInRow,\n getC4BoundaryInRow,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n getConfig: () => getConfig().c4,\n clear,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n setTitle,\n setC4Type\n // apply,\n};\nconst drawRect = function(elem, rectData) {\n return drawRect$1(elem, rectData);\n};\nconst drawImage = function(elem, width, height, x, y, link) {\n const imageElem = elem.append(\"image\");\n imageElem.attr(\"width\", width);\n imageElem.attr(\"height\", height);\n imageElem.attr(\"x\", x);\n imageElem.attr(\"y\", y);\n let sanitizedLink = link.startsWith(\"data:image/png;base64\") ? link : sanitizeUrl(link);\n imageElem.attr(\"xlink:href\", sanitizedLink);\n};\nconst drawRels$1 = (elem, rels2, conf2) => {\n const relsElem = elem.append(\"g\");\n let i = 0;\n for (let rel of rels2) {\n let textColor = rel.textColor ? rel.textColor : \"#444444\";\n let strokeColor = rel.lineColor ? rel.lineColor : \"#444444\";\n let offsetX = rel.offsetX ? parseInt(rel.offsetX) : 0;\n let offsetY = rel.offsetY ? parseInt(rel.offsetY) : 0;\n let url = \"\";\n if (i === 0) {\n let line = relsElem.append(\"line\");\n line.attr(\"x1\", rel.startPoint.x);\n line.attr(\"y1\", rel.startPoint.y);\n line.attr(\"x2\", rel.endPoint.x);\n line.attr(\"y2\", rel.endPoint.y);\n line.attr(\"stroke-width\", \"1\");\n line.attr(\"stroke\", strokeColor);\n line.style(\"fill\", \"none\");\n if (rel.type !== \"rel_b\") {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (rel.type === \"birel\" || rel.type === \"rel_b\") {\n line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n }\n i = -1;\n } else {\n let line = relsElem.append(\"path\");\n line.attr(\"fill\", \"none\").attr(\"stroke-width\", \"1\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,starty Qcontrolx,controly stopx,stopy \".replaceAll(\"startx\", rel.startPoint.x).replaceAll(\"starty\", rel.startPoint.y).replaceAll(\n \"controlx\",\n rel.startPoint.x + (rel.endPoint.x - rel.startPoint.x) / 2 - (rel.endPoint.x - rel.startPoint.x) / 4\n ).replaceAll(\"controly\", rel.startPoint.y + (rel.endPoint.y - rel.startPoint.y) / 2).replaceAll(\"stopx\", rel.endPoint.x).replaceAll(\"stopy\", rel.endPoint.y)\n );\n if (rel.type !== \"rel_b\") {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (rel.type === \"birel\" || rel.type === \"rel_b\") {\n line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n }\n }\n let messageConf = conf2.messageFont();\n _drawTextCandidateFunc(conf2)(\n rel.label.text,\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + offsetY,\n rel.label.width,\n rel.label.height,\n { fill: textColor },\n messageConf\n );\n if (rel.techn && rel.techn.text !== \"\") {\n messageConf = conf2.messageFont();\n _drawTextCandidateFunc(conf2)(\n \"[\" + rel.techn.text + \"]\",\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + conf2.messageFontSize + 5 + offsetY,\n Math.max(rel.label.width, rel.techn.width),\n rel.techn.height,\n { fill: textColor, \"font-style\": \"italic\" },\n messageConf\n );\n }\n }\n};\nconst drawBoundary$1 = function(elem, boundary, conf2) {\n const boundaryElem = elem.append(\"g\");\n let fillColor = boundary.bgColor ? boundary.bgColor : \"none\";\n let strokeColor = boundary.borderColor ? boundary.borderColor : \"#444444\";\n let fontColor = boundary.fontColor ? boundary.fontColor : \"black\";\n let attrsValue = { \"stroke-width\": 1, \"stroke-dasharray\": \"7.0,7.0\" };\n if (boundary.nodeType) {\n attrsValue = { \"stroke-width\": 1 };\n }\n let rectData = {\n x: boundary.x,\n y: boundary.y,\n fill: fillColor,\n stroke: strokeColor,\n width: boundary.width,\n height: boundary.height,\n rx: 2.5,\n ry: 2.5,\n attrs: attrsValue\n };\n drawRect(boundaryElem, rectData);\n let boundaryConf = conf2.boundaryFont();\n boundaryConf.fontWeight = \"bold\";\n boundaryConf.fontSize = boundaryConf.fontSize + 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.label.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.label.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n if (boundary.type && boundary.type.text !== \"\") {\n boundaryConf = conf2.boundaryFont();\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.type.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.type.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n }\n if (boundary.descr && boundary.descr.text !== \"\") {\n boundaryConf = conf2.boundaryFont();\n boundaryConf.fontSize = boundaryConf.fontSize - 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.descr.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.descr.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n }\n};\nconst drawC4Shape = function(elem, c4Shape, conf2) {\n var _a;\n let fillColor = c4Shape.bgColor ? c4Shape.bgColor : conf2[c4Shape.typeC4Shape.text + \"_bg_color\"];\n let strokeColor = c4Shape.borderColor ? c4Shape.borderColor : conf2[c4Shape.typeC4Shape.text + \"_border_color\"];\n let fontColor = c4Shape.fontColor ? c4Shape.fontColor : \"#FFFFFF\";\n let personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\";\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\";\n break;\n case \"external_person\":\n personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=\";\n break;\n }\n const c4ShapeElem = elem.append(\"g\");\n c4ShapeElem.attr(\"class\", \"person-man\");\n const rect = getNoteRect();\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n case \"system\":\n case \"external_system\":\n case \"container\":\n case \"external_container\":\n case \"component\":\n case \"external_component\":\n rect.x = c4Shape.x;\n rect.y = c4Shape.y;\n rect.fill = fillColor;\n rect.width = c4Shape.width;\n rect.height = c4Shape.height;\n rect.stroke = strokeColor;\n rect.rx = 2.5;\n rect.ry = 2.5;\n rect.attrs = { \"stroke-width\": 0.5 };\n drawRect(c4ShapeElem, rect);\n break;\n case \"system_db\":\n case \"external_system_db\":\n case \"container_db\":\n case \"external_container_db\":\n case \"component_db\":\n case \"external_component_db\":\n c4ShapeElem.append(\"path\").attr(\"fill\", fillColor).attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.width / 2).replaceAll(\"height\", c4Shape.height)\n );\n c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.width / 2)\n );\n break;\n case \"system_queue\":\n case \"external_system_queue\":\n case \"container_queue\":\n case \"external_container_queue\":\n case \"component_queue\":\n case \"external_component_queue\":\n c4ShapeElem.append(\"path\").attr(\"fill\", fillColor).attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"width\", c4Shape.width).replaceAll(\"half\", c4Shape.height / 2)\n );\n c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half\".replaceAll(\"startx\", c4Shape.x + c4Shape.width).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.height / 2)\n );\n break;\n }\n let c4ShapeFontConf = getC4ShapeFont(conf2, c4Shape.typeC4Shape.text);\n c4ShapeElem.append(\"text\").attr(\"fill\", fontColor).attr(\"font-family\", c4ShapeFontConf.fontFamily).attr(\"font-size\", c4ShapeFontConf.fontSize - 2).attr(\"font-style\", \"italic\").attr(\"lengthAdjust\", \"spacing\").attr(\"textLength\", c4Shape.typeC4Shape.width).attr(\"x\", c4Shape.x + c4Shape.width / 2 - c4Shape.typeC4Shape.width / 2).attr(\"y\", c4Shape.y + c4Shape.typeC4Shape.Y).text(\"<<\" + c4Shape.typeC4Shape.text + \">>\");\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n drawImage(\n c4ShapeElem,\n 48,\n 48,\n c4Shape.x + c4Shape.width / 2 - 24,\n c4Shape.y + c4Shape.image.Y,\n personImg\n );\n break;\n }\n let textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n textFontConf.fontWeight = \"bold\";\n textFontConf.fontSize = textFontConf.fontSize + 2;\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n c4Shape.label.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.label.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n textFontConf.fontColor = fontColor;\n if (c4Shape.techn && ((_a = c4Shape.techn) == null ? void 0 : _a.text) !== \"\") {\n _drawTextCandidateFunc(conf2)(\n c4Shape.techn.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.techn.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, \"font-style\": \"italic\" },\n textFontConf\n );\n } else if (c4Shape.type && c4Shape.type.text !== \"\") {\n _drawTextCandidateFunc(conf2)(\n c4Shape.type.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.type.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, \"font-style\": \"italic\" },\n textFontConf\n );\n }\n if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n textFontConf = conf2.personFont();\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n c4Shape.descr.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.descr.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n }\n return c4Shape.height;\n};\nconst insertDatabaseIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"database\").attr(\"fill-rule\", \"evenodd\").attr(\"clip-rule\", \"evenodd\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"\n );\n};\nconst insertComputerIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"computer\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"\n );\n};\nconst insertClockIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"clock\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"\n );\n};\nconst insertArrowHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\");\n};\nconst insertArrowEnd = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowend\").attr(\"refX\", 1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 10 0 L 0 5 L 10 10 z\");\n};\nconst insertArrowFilledHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"filled-head\").attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst insertDynamicNumber = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"sequencenumber\").attr(\"refX\", 15).attr(\"refY\", 15).attr(\"markerWidth\", 60).attr(\"markerHeight\", 40).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", 15).attr(\"cy\", 15).attr(\"r\", 6);\n};\nconst insertArrowCrossHead = function(elem) {\n const defs = elem.append(\"defs\");\n const marker = defs.append(\"marker\").attr(\"id\", \"crosshead\").attr(\"markerWidth\", 15).attr(\"markerHeight\", 8).attr(\"orient\", \"auto\").attr(\"refX\", 16).attr(\"refY\", 4);\n marker.append(\"path\").attr(\"fill\", \"black\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1px\").attr(\"d\", \"M 9,2 V 6 L16,4 Z\");\n marker.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1px\").attr(\"d\", \"M 0,1 L 6,7 M 6,1 L 0,7\");\n};\nconst getC4ShapeFont = (cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n fontSize: cnf[typeC4Shape + \"FontSize\"],\n fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n };\n};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2) {\n const { fontSize, fontFamily, fontWeight } = conf2;\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * fontSize - fontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).style(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").style(\"font-size\", fontSize).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily);\n text.append(\"tspan\").attr(\"dy\", dy).text(lines[i]).attr(\"alignment-baseline\", \"mathematical\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const s = g.append(\"switch\");\n const f = s.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, s, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst svgDraw = {\n drawRect,\n drawBoundary: drawBoundary$1,\n drawC4Shape,\n drawRels: drawRels$1,\n drawImage,\n insertArrowHead,\n insertArrowEnd,\n insertArrowFilledHead,\n insertDynamicNumber,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon\n};\nlet globalBoundaryMaxX = 0, globalBoundaryMaxY = 0;\nlet c4ShapeInRow = 4;\nlet c4BoundaryInRow = 2;\nparser.yy = db;\nlet conf = {};\nclass Bounds {\n constructor(diagObj) {\n this.name = \"\";\n this.data = {};\n this.data.startx = void 0;\n this.data.stopx = void 0;\n this.data.starty = void 0;\n this.data.stopy = void 0;\n this.data.widthLimit = void 0;\n this.nextData = {};\n this.nextData.startx = void 0;\n this.nextData.stopx = void 0;\n this.nextData.starty = void 0;\n this.nextData.stopy = void 0;\n this.nextData.cnt = 0;\n setConf(diagObj.db.getConfig());\n }\n setData(startx, stopx, starty, stopy) {\n this.nextData.startx = this.data.startx = startx;\n this.nextData.stopx = this.data.stopx = stopx;\n this.nextData.starty = this.data.starty = starty;\n this.nextData.stopy = this.data.stopy = stopy;\n }\n updateVal(obj, key, val, fun) {\n if (obj[key] === void 0) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n }\n insert(c4Shape) {\n this.nextData.cnt = this.nextData.cnt + 1;\n let _startx = this.nextData.startx === this.nextData.stopx ? this.nextData.stopx + c4Shape.margin : this.nextData.stopx + c4Shape.margin * 2;\n let _stopx = _startx + c4Shape.width;\n let _starty = this.nextData.starty + c4Shape.margin * 2;\n let _stopy = _starty + c4Shape.height;\n if (_startx >= this.data.widthLimit || _stopx >= this.data.widthLimit || this.nextData.cnt > c4ShapeInRow) {\n _startx = this.nextData.startx + c4Shape.margin + conf.nextLinePaddingX;\n _starty = this.nextData.stopy + c4Shape.margin * 2;\n this.nextData.stopx = _stopx = _startx + c4Shape.width;\n this.nextData.starty = this.nextData.stopy;\n this.nextData.stopy = _stopy = _starty + c4Shape.height;\n this.nextData.cnt = 1;\n }\n c4Shape.x = _startx;\n c4Shape.y = _starty;\n this.updateVal(this.data, \"startx\", _startx, Math.min);\n this.updateVal(this.data, \"starty\", _starty, Math.min);\n this.updateVal(this.data, \"stopx\", _stopx, Math.max);\n this.updateVal(this.data, \"stopy\", _stopy, Math.max);\n this.updateVal(this.nextData, \"startx\", _startx, Math.min);\n this.updateVal(this.nextData, \"starty\", _starty, Math.min);\n this.updateVal(this.nextData, \"stopx\", _stopx, Math.max);\n this.updateVal(this.nextData, \"stopy\", _stopy, Math.max);\n }\n init(diagObj) {\n this.name = \"\";\n this.data = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0,\n widthLimit: void 0\n };\n this.nextData = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0,\n cnt: 0\n };\n setConf(diagObj.db.getConfig());\n }\n bumpLastMargin(margin) {\n this.data.stopx += margin;\n this.data.stopy += margin;\n }\n}\nconst setConf = function(cnf) {\n assignWithDepth(conf, cnf);\n if (cnf.fontFamily) {\n conf.personFontFamily = conf.systemFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.personFontSize = conf.systemFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.personFontWeight = conf.systemFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\nconst c4ShapeFont = (cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n fontSize: cnf[typeC4Shape + \"FontSize\"],\n fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n };\n};\nconst boundaryFont = (cnf) => {\n return {\n fontFamily: cnf.boundaryFontFamily,\n fontSize: cnf.boundaryFontSize,\n fontWeight: cnf.boundaryFontWeight\n };\n};\nconst messageFont = (cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight\n };\n};\nfunction calcC4ShapeTextWH(textType, c4Shape, c4ShapeTextWrap, textConf, textLimitWidth) {\n if (!c4Shape[textType].width) {\n if (c4ShapeTextWrap) {\n c4Shape[textType].text = wrapLabel(c4Shape[textType].text, textLimitWidth, textConf);\n c4Shape[textType].textLines = c4Shape[textType].text.split(common.lineBreakRegex).length;\n c4Shape[textType].width = textLimitWidth;\n c4Shape[textType].height = calculateTextHeight(c4Shape[textType].text, textConf);\n } else {\n let lines = c4Shape[textType].text.split(common.lineBreakRegex);\n c4Shape[textType].textLines = lines.length;\n let lineHeight = 0;\n c4Shape[textType].height = 0;\n c4Shape[textType].width = 0;\n for (const line of lines) {\n c4Shape[textType].width = Math.max(\n calculateTextWidth(line, textConf),\n c4Shape[textType].width\n );\n lineHeight = calculateTextHeight(line, textConf);\n c4Shape[textType].height = c4Shape[textType].height + lineHeight;\n }\n }\n }\n}\nconst drawBoundary = function(diagram2, boundary, bounds) {\n boundary.x = bounds.data.startx;\n boundary.y = bounds.data.starty;\n boundary.width = bounds.data.stopx - bounds.data.startx;\n boundary.height = bounds.data.stopy - bounds.data.starty;\n boundary.label.y = conf.c4ShapeMargin - 35;\n let boundaryTextWrap = boundary.wrap && conf.wrap;\n let boundaryLabelConf = boundaryFont(conf);\n boundaryLabelConf.fontSize = boundaryLabelConf.fontSize + 2;\n boundaryLabelConf.fontWeight = \"bold\";\n let textLimitWidth = calculateTextWidth(boundary.label.text, boundaryLabelConf);\n calcC4ShapeTextWH(\"label\", boundary, boundaryTextWrap, boundaryLabelConf, textLimitWidth);\n svgDraw.drawBoundary(diagram2, boundary, conf);\n};\nconst drawC4ShapeArray = function(currentBounds, diagram2, c4ShapeArray2, c4ShapeKeys) {\n let Y = 0;\n for (const c4ShapeKey of c4ShapeKeys) {\n Y = 0;\n const c4Shape = c4ShapeArray2[c4ShapeKey];\n let c4ShapeTypeConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeTypeConf.fontSize = c4ShapeTypeConf.fontSize - 2;\n c4Shape.typeC4Shape.width = calculateTextWidth(\n \"\u00AB\" + c4Shape.typeC4Shape.text + \"\u00BB\",\n c4ShapeTypeConf\n );\n c4Shape.typeC4Shape.height = c4ShapeTypeConf.fontSize + 2;\n c4Shape.typeC4Shape.Y = conf.c4ShapePadding;\n Y = c4Shape.typeC4Shape.Y + c4Shape.typeC4Shape.height - 4;\n c4Shape.image = { width: 0, height: 0, Y: 0 };\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n break;\n }\n if (c4Shape.sprite) {\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n }\n let c4ShapeTextWrap = c4Shape.wrap && conf.wrap;\n let textLimitWidth = conf.width - conf.c4ShapePadding * 2;\n let c4ShapeLabelConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeLabelConf.fontSize = c4ShapeLabelConf.fontSize + 2;\n c4ShapeLabelConf.fontWeight = \"bold\";\n calcC4ShapeTextWH(\"label\", c4Shape, c4ShapeTextWrap, c4ShapeLabelConf, textLimitWidth);\n c4Shape[\"label\"].Y = Y + 8;\n Y = c4Shape[\"label\"].Y + c4Shape[\"label\"].height;\n if (c4Shape.type && c4Shape.type.text !== \"\") {\n c4Shape.type.text = \"[\" + c4Shape.type.text + \"]\";\n let c4ShapeTypeConf2 = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH(\"type\", c4Shape, c4ShapeTextWrap, c4ShapeTypeConf2, textLimitWidth);\n c4Shape[\"type\"].Y = Y + 5;\n Y = c4Shape[\"type\"].Y + c4Shape[\"type\"].height;\n } else if (c4Shape.techn && c4Shape.techn.text !== \"\") {\n c4Shape.techn.text = \"[\" + c4Shape.techn.text + \"]\";\n let c4ShapeTechnConf = c4ShapeFont(conf, c4Shape.techn.text);\n calcC4ShapeTextWH(\"techn\", c4Shape, c4ShapeTextWrap, c4ShapeTechnConf, textLimitWidth);\n c4Shape[\"techn\"].Y = Y + 5;\n Y = c4Shape[\"techn\"].Y + c4Shape[\"techn\"].height;\n }\n let rectHeight = Y;\n let rectWidth = c4Shape.label.width;\n if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n let c4ShapeDescrConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH(\"descr\", c4Shape, c4ShapeTextWrap, c4ShapeDescrConf, textLimitWidth);\n c4Shape[\"descr\"].Y = Y + 20;\n Y = c4Shape[\"descr\"].Y + c4Shape[\"descr\"].height;\n rectWidth = Math.max(c4Shape.label.width, c4Shape.descr.width);\n rectHeight = Y - c4Shape[\"descr\"].textLines * 5;\n }\n rectWidth = rectWidth + conf.c4ShapePadding;\n c4Shape.width = Math.max(c4Shape.width || conf.width, rectWidth, conf.width);\n c4Shape.height = Math.max(c4Shape.height || conf.height, rectHeight, conf.height);\n c4Shape.margin = c4Shape.margin || conf.c4ShapeMargin;\n currentBounds.insert(c4Shape);\n svgDraw.drawC4Shape(diagram2, c4Shape, conf);\n }\n currentBounds.bumpLastMargin(conf.c4ShapeMargin);\n};\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n}\nlet getIntersectPoint = function(fromNode, endPoint) {\n let x1 = fromNode.x;\n let y1 = fromNode.y;\n let x2 = endPoint.x;\n let y2 = endPoint.y;\n let fromCenterX = x1 + fromNode.width / 2;\n let fromCenterY = y1 + fromNode.height / 2;\n let dx = Math.abs(x1 - x2);\n let dy = Math.abs(y1 - y2);\n let tanDYX = dy / dx;\n let fromDYX = fromNode.height / fromNode.width;\n let returnPoint = null;\n if (y1 == y2 && x1 < x2) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY);\n } else if (y1 == y2 && x1 > x2) {\n returnPoint = new Point(x1, fromCenterY);\n } else if (x1 == x2 && y1 < y2) {\n returnPoint = new Point(fromCenterX, y1 + fromNode.height);\n } else if (x1 == x2 && y1 > y2) {\n returnPoint = new Point(fromCenterX, y1);\n }\n if (x1 > x2 && y1 < y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY + tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(\n fromCenterX - dx / dy * fromNode.height / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 < y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY + tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(\n fromCenterX + dx / dy * fromNode.height / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY - tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(fromCenterX + fromNode.height / 2 * dx / dy, y1);\n }\n } else if (x1 > x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY - fromNode.width / 2 * tanDYX);\n } else {\n returnPoint = new Point(fromCenterX - fromNode.height / 2 * dx / dy, y1);\n }\n }\n return returnPoint;\n};\nlet getIntersectPoints = function(fromNode, endNode) {\n let endIntersectPoint = { x: 0, y: 0 };\n endIntersectPoint.x = endNode.x + endNode.width / 2;\n endIntersectPoint.y = endNode.y + endNode.height / 2;\n let startPoint = getIntersectPoint(fromNode, endIntersectPoint);\n endIntersectPoint.x = fromNode.x + fromNode.width / 2;\n endIntersectPoint.y = fromNode.y + fromNode.height / 2;\n let endPoint = getIntersectPoint(endNode, endIntersectPoint);\n return { startPoint, endPoint };\n};\nconst drawRels = function(diagram2, rels2, getC4ShapeObj, diagObj) {\n let i = 0;\n for (let rel of rels2) {\n i = i + 1;\n let relTextWrap = rel.wrap && conf.wrap;\n let relConf = messageFont(conf);\n let diagramType = diagObj.db.getC4Type();\n if (diagramType === \"C4Dynamic\") {\n rel.label.text = i + \": \" + rel.label.text;\n }\n let textLimitWidth = calculateTextWidth(rel.label.text, relConf);\n calcC4ShapeTextWH(\"label\", rel, relTextWrap, relConf, textLimitWidth);\n if (rel.techn && rel.techn.text !== \"\") {\n textLimitWidth = calculateTextWidth(rel.techn.text, relConf);\n calcC4ShapeTextWH(\"techn\", rel, relTextWrap, relConf, textLimitWidth);\n }\n if (rel.descr && rel.descr.text !== \"\") {\n textLimitWidth = calculateTextWidth(rel.descr.text, relConf);\n calcC4ShapeTextWH(\"descr\", rel, relTextWrap, relConf, textLimitWidth);\n }\n let fromNode = getC4ShapeObj(rel.from);\n let endNode = getC4ShapeObj(rel.to);\n let points = getIntersectPoints(fromNode, endNode);\n rel.startPoint = points.startPoint;\n rel.endPoint = points.endPoint;\n }\n svgDraw.drawRels(diagram2, rels2, conf);\n};\nfunction drawInsideBoundary(diagram2, parentBoundaryAlias, parentBounds, currentBoundaries, diagObj) {\n let currentBounds = new Bounds(diagObj);\n currentBounds.data.widthLimit = parentBounds.data.widthLimit / Math.min(c4BoundaryInRow, currentBoundaries.length);\n for (let [i, currentBoundary] of currentBoundaries.entries()) {\n let Y = 0;\n currentBoundary.image = { width: 0, height: 0, Y: 0 };\n if (currentBoundary.sprite) {\n currentBoundary.image.width = 48;\n currentBoundary.image.height = 48;\n currentBoundary.image.Y = Y;\n Y = currentBoundary.image.Y + currentBoundary.image.height;\n }\n let currentBoundaryTextWrap = currentBoundary.wrap && conf.wrap;\n let currentBoundaryLabelConf = boundaryFont(conf);\n currentBoundaryLabelConf.fontSize = currentBoundaryLabelConf.fontSize + 2;\n currentBoundaryLabelConf.fontWeight = \"bold\";\n calcC4ShapeTextWH(\n \"label\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryLabelConf,\n currentBounds.data.widthLimit\n );\n currentBoundary[\"label\"].Y = Y + 8;\n Y = currentBoundary[\"label\"].Y + currentBoundary[\"label\"].height;\n if (currentBoundary.type && currentBoundary.type.text !== \"\") {\n currentBoundary.type.text = \"[\" + currentBoundary.type.text + \"]\";\n let currentBoundaryTypeConf = boundaryFont(conf);\n calcC4ShapeTextWH(\n \"type\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryTypeConf,\n currentBounds.data.widthLimit\n );\n currentBoundary[\"type\"].Y = Y + 5;\n Y = currentBoundary[\"type\"].Y + currentBoundary[\"type\"].height;\n }\n if (currentBoundary.descr && currentBoundary.descr.text !== \"\") {\n let currentBoundaryDescrConf = boundaryFont(conf);\n currentBoundaryDescrConf.fontSize = currentBoundaryDescrConf.fontSize - 2;\n calcC4ShapeTextWH(\n \"descr\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryDescrConf,\n currentBounds.data.widthLimit\n );\n currentBoundary[\"descr\"].Y = Y + 20;\n Y = currentBoundary[\"descr\"].Y + currentBoundary[\"descr\"].height;\n }\n if (i == 0 || i % c4BoundaryInRow === 0) {\n let _x = parentBounds.data.startx + conf.diagramMarginX;\n let _y = parentBounds.data.stopy + conf.diagramMarginY + Y;\n currentBounds.setData(_x, _x, _y, _y);\n } else {\n let _x = currentBounds.data.stopx !== currentBounds.data.startx ? currentBounds.data.stopx + conf.diagramMarginX : currentBounds.data.startx;\n let _y = currentBounds.data.starty;\n currentBounds.setData(_x, _x, _y, _y);\n }\n currentBounds.name = currentBoundary.alias;\n let currentPersonOrSystemArray = diagObj.db.getC4ShapeArray(currentBoundary.alias);\n let currentPersonOrSystemKeys = diagObj.db.getC4ShapeKeys(currentBoundary.alias);\n if (currentPersonOrSystemKeys.length > 0) {\n drawC4ShapeArray(\n currentBounds,\n diagram2,\n currentPersonOrSystemArray,\n currentPersonOrSystemKeys\n );\n }\n parentBoundaryAlias = currentBoundary.alias;\n let nextCurrentBoundarys = diagObj.db.getBoundarys(parentBoundaryAlias);\n if (nextCurrentBoundarys.length > 0) {\n drawInsideBoundary(\n diagram2,\n parentBoundaryAlias,\n currentBounds,\n nextCurrentBoundarys,\n diagObj\n );\n }\n if (currentBoundary.alias !== \"global\") {\n drawBoundary(diagram2, currentBoundary, currentBounds);\n }\n parentBounds.data.stopy = Math.max(\n currentBounds.data.stopy + conf.c4ShapeMargin,\n parentBounds.data.stopy\n );\n parentBounds.data.stopx = Math.max(\n currentBounds.data.stopx + conf.c4ShapeMargin,\n parentBounds.data.stopx\n );\n globalBoundaryMaxX = Math.max(globalBoundaryMaxX, parentBounds.data.stopx);\n globalBoundaryMaxY = Math.max(globalBoundaryMaxY, parentBounds.data.stopy);\n }\n}\nconst draw = function(_text, id, _version, diagObj) {\n conf = getConfig().c4;\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n let db2 = diagObj.db;\n diagObj.db.setWrap(conf.wrap);\n c4ShapeInRow = db2.getC4ShapeInRow();\n c4BoundaryInRow = db2.getC4BoundaryInRow();\n log.debug(`C:${JSON.stringify(conf, null, 2)}`);\n const diagram2 = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n svgDraw.insertComputerIcon(diagram2);\n svgDraw.insertDatabaseIcon(diagram2);\n svgDraw.insertClockIcon(diagram2);\n let screenBounds = new Bounds(diagObj);\n screenBounds.setData(\n conf.diagramMarginX,\n conf.diagramMarginX,\n conf.diagramMarginY,\n conf.diagramMarginY\n );\n screenBounds.data.widthLimit = screen.availWidth;\n globalBoundaryMaxX = conf.diagramMarginX;\n globalBoundaryMaxY = conf.diagramMarginY;\n const title2 = diagObj.db.getTitle();\n let currentBoundaries = diagObj.db.getBoundarys(\"\");\n drawInsideBoundary(diagram2, \"\", screenBounds, currentBoundaries, diagObj);\n svgDraw.insertArrowHead(diagram2);\n svgDraw.insertArrowEnd(diagram2);\n svgDraw.insertArrowCrossHead(diagram2);\n svgDraw.insertArrowFilledHead(diagram2);\n drawRels(diagram2, diagObj.db.getRels(), diagObj.db.getC4Shape, diagObj);\n screenBounds.data.stopx = globalBoundaryMaxX;\n screenBounds.data.stopy = globalBoundaryMaxY;\n const box = screenBounds.data;\n let boxHeight = box.stopy - box.starty;\n let height = boxHeight + 2 * conf.diagramMarginY;\n let boxWidth = box.stopx - box.startx;\n const width = boxWidth + 2 * conf.diagramMarginX;\n if (title2) {\n diagram2.append(\"text\").text(title2).attr(\"x\", (box.stopx - box.startx) / 2 - 4 * conf.diagramMarginX).attr(\"y\", box.starty + conf.diagramMarginY);\n }\n configureSvgSize(diagram2, height, width, conf.useMaxWidth);\n const extraVertForTitle = title2 ? 60 : 0;\n diagram2.attr(\n \"viewBox\",\n box.startx - conf.diagramMarginX + \" -\" + (conf.diagramMarginY + extraVertForTitle) + \" \" + width + \" \" + (height + extraVertForTitle)\n );\n log.debug(`models:`, box);\n};\nconst renderer = {\n drawPersonOrSystemArray: drawC4ShapeArray,\n drawBoundary,\n setConf,\n draw\n};\nconst getStyles = (options) => `.person {\n stroke: ${options.personBorder};\n fill: ${options.personBkg};\n }\n`;\nconst styles = getStyles;\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles,\n init: ({ c4, wrap }) => {\n renderer.setConf(c4);\n db.setWrap(wrap);\n }\n};\nexport {\n diagram\n};\n"], + "mappings": "4RAGA,IAAAA,GAA4B,WAE5B,IAAAC,GAAO,WACPC,GAAO,WAMP,IAAIC,GAAS,UAAW,CACtB,IAAIC,EAAI,SAASC,GAAGC,EAAGC,EAAIC,EAAG,CAC5B,IAAKD,EAAKA,GAAM,CAAC,EAAGC,EAAIH,GAAE,OAAQG,IAAKD,EAAGF,GAAEG,CAAC,CAAC,EAAIF,EAChD,CACF,OAAOC,CACT,EAAGE,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,GAAI,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACryCC,GAAU,CACZ,MAAO,UAAiB,CACxB,EACA,GAAI,CAAC,EACL,SAAU,CAAE,MAAS,EAAG,MAAS,EAAG,WAAc,EAAG,UAAa,EAAG,aAAgB,EAAG,aAAgB,EAAG,aAAgB,EAAG,aAAgB,EAAG,YAAe,GAAI,WAAc,GAAI,QAAW,GAAI,WAAc,GAAI,IAAO,GAAI,aAAgB,GAAI,aAAgB,GAAI,WAAc,GAAI,cAAiB,GAAI,gBAAmB,GAAI,kBAAqB,GAAI,eAAkB,GAAI,MAAS,GAAI,eAAkB,GAAI,UAAa,GAAI,gBAAmB,GAAI,UAAa,GAAI,gBAAmB,GAAI,0BAA6B,GAAI,kBAAqB,GAAI,uBAA0B,GAAI,sBAAyB,GAAI,cAAiB,GAAI,OAAU,GAAI,oBAAuB,GAAI,WAAc,GAAI,gBAAmB,GAAI,SAAY,GAAI,mBAAsB,GAAI,KAAQ,GAAI,OAAU,GAAI,OAAU,GAAI,OAAU,GAAI,iBAAoB,GAAI,OAAU,GAAI,WAAc,GAAI,OAAU,GAAI,UAAa,GAAI,aAAgB,GAAI,WAAc,GAAI,cAAiB,GAAI,iBAAoB,GAAI,UAAa,GAAI,aAAgB,GAAI,gBAAmB,GAAI,cAAiB,GAAI,iBAAoB,GAAI,oBAAuB,GAAI,UAAa,GAAI,aAAgB,GAAI,gBAAmB,GAAI,cAAiB,GAAI,iBAAoB,GAAI,oBAAuB,GAAI,IAAO,GAAI,MAAS,GAAI,MAAS,GAAI,MAAS,GAAI,MAAS,GAAI,MAAS,GAAI,MAAS,GAAI,UAAa,GAAI,gBAAmB,GAAI,iBAAoB,GAAI,qBAAwB,GAAI,UAAa,GAAI,IAAO,GAAI,QAAW,GAAI,UAAa,GAAI,UAAa,GAAI,gBAAmB,GAAI,QAAW,EAAG,KAAQ,CAAE,EACzgD,WAAY,CAAE,EAAG,QAAS,EAAG,eAAgB,EAAG,eAAgB,EAAG,eAAgB,EAAG,eAAgB,GAAI,aAAc,GAAI,UAAW,GAAI,MAAO,GAAI,eAAgB,GAAI,eAAgB,GAAI,aAAc,GAAI,gBAAiB,GAAI,QAAS,GAAI,iBAAkB,GAAI,YAAa,GAAI,kBAAmB,GAAI,YAAa,GAAI,kBAAmB,GAAI,4BAA6B,GAAI,SAAU,GAAI,sBAAuB,GAAI,kBAAmB,GAAI,WAAY,GAAI,qBAAsB,GAAI,OAAQ,GAAI,SAAU,GAAI,SAAU,GAAI,SAAU,GAAI,SAAU,GAAI,aAAc,GAAI,SAAU,GAAI,YAAa,GAAI,eAAgB,GAAI,aAAc,GAAI,gBAAiB,GAAI,mBAAoB,GAAI,YAAa,GAAI,eAAgB,GAAI,kBAAmB,GAAI,gBAAiB,GAAI,mBAAoB,GAAI,sBAAuB,GAAI,YAAa,GAAI,eAAgB,GAAI,kBAAmB,GAAI,gBAAiB,GAAI,mBAAoB,GAAI,sBAAuB,GAAI,MAAO,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,GAAI,YAAa,GAAI,kBAAmB,GAAI,mBAAoB,GAAI,uBAAwB,GAAI,MAAO,GAAI,UAAW,GAAI,YAAa,GAAI,YAAa,GAAI,iBAAkB,EACtrC,aAAc,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,CAAC,EACrrB,cAAe,SAAmBC,EAAQC,EAAQC,EAAUC,EAAIC,EAASC,EAAIC,GAAI,CAC/E,IAAIC,EAAKF,EAAG,OAAS,EACrB,OAAQD,EAAS,CACf,IAAK,GACHD,EAAG,aAAa,IAAI,EACpB,MACF,IAAK,GACHA,EAAG,aAAa,IAAI,EACpB,MACF,IAAK,GACHA,EAAG,aAAa,IAAI,EACpB,MACF,IAAK,GACHA,EAAG,aAAa,IAAI,EACpB,MACF,IAAK,GACL,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACHA,EAAG,UAAUE,EAAGE,EAAK,CAAC,CAAC,EACvB,MACF,IAAK,IACHJ,EAAG,SAASE,EAAGE,CAAE,EAAE,UAAU,CAAC,CAAC,EAC/B,KAAK,EAAIF,EAAGE,CAAE,EAAE,UAAU,CAAC,EAC3B,MACF,IAAK,IACHJ,EAAG,kBAAkBE,EAAGE,CAAE,EAAE,UAAU,EAAE,CAAC,EACzC,KAAK,EAAIF,EAAGE,CAAE,EAAE,UAAU,EAAE,EAC5B,MACF,IAAK,IACH,KAAK,EAAIF,EAAGE,CAAE,EAAE,KAAK,EACrBJ,EAAG,SAAS,KAAK,CAAC,EAClB,MACF,IAAK,IACL,IAAK,IACH,KAAK,EAAIE,EAAGE,CAAE,EAAE,KAAK,EACrBJ,EAAG,kBAAkB,KAAK,CAAC,EAC3B,MACF,IAAK,IACL,IAAK,IACHE,EAAGE,CAAE,EAAE,OAAO,EAAG,EAAG,YAAY,EAChCJ,EAAG,0BAA0B,GAAGE,EAAGE,CAAE,CAAC,EACtC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,0BAA0B,GAAGE,EAAGE,CAAE,CAAC,EACtC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHF,EAAGE,CAAE,EAAE,OAAO,EAAG,EAAG,WAAW,EAC/BJ,EAAG,qBAAqB,GAAGE,EAAGE,CAAE,CAAC,EACjC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,OAAQ,GAAGE,EAAGE,CAAE,CAAC,EACtC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,QAAS,GAAGE,EAAGE,CAAE,CAAC,EACvC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,QAAS,GAAGE,EAAGE,CAAE,CAAC,EACvC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,sBAAsB,EACzB,MACF,IAAK,IACHA,EAAG,kBAAkB,SAAU,GAAGE,EAAGE,CAAE,CAAC,EACxC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,kBAAmB,GAAGE,EAAGE,CAAE,CAAC,EACjD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,SAAU,GAAGE,EAAGE,CAAE,CAAC,EACxC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,YAAa,GAAGE,EAAGE,CAAE,CAAC,EAC3C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,eAAgB,GAAGE,EAAGE,CAAE,CAAC,EAC9C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,kBAAmB,GAAGE,EAAGE,CAAE,CAAC,EACjD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,qBAAsB,GAAGE,EAAGE,CAAE,CAAC,EACpD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,wBAAyB,GAAGE,EAAGE,CAAE,CAAC,EACvD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,YAAa,GAAGE,EAAGE,CAAE,CAAC,EACtC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,eAAgB,GAAGE,EAAGE,CAAE,CAAC,EACzC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,kBAAmB,GAAGE,EAAGE,CAAE,CAAC,EAC5C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,qBAAsB,GAAGE,EAAGE,CAAE,CAAC,EAC/C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,wBAAyB,GAAGE,EAAGE,CAAE,CAAC,EAClD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,2BAA4B,GAAGE,EAAGE,CAAE,CAAC,EACrD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,YAAa,GAAGE,EAAGE,CAAE,CAAC,EACtC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,eAAgB,GAAGE,EAAGE,CAAE,CAAC,EACzC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,kBAAmB,GAAGE,EAAGE,CAAE,CAAC,EAC5C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,qBAAsB,GAAGE,EAAGE,CAAE,CAAC,EAC/C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,wBAAyB,GAAGE,EAAGE,CAAE,CAAC,EAClD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,2BAA4B,GAAGE,EAAGE,CAAE,CAAC,EACrD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,MAAO,GAAGE,EAAGE,CAAE,CAAC,EAC1B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,QAAS,GAAGE,EAAGE,CAAE,CAAC,EAC5B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,QAAS,GAAGE,EAAGE,CAAE,CAAC,EAC5B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,QAAS,GAAGE,EAAGE,CAAE,CAAC,EAC5B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,QAAS,GAAGE,EAAGE,CAAE,CAAC,EAC5B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,QAAS,GAAGE,EAAGE,CAAE,CAAC,EAC5B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,QAAS,GAAGE,EAAGE,CAAE,CAAC,EAC5B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHF,EAAGE,CAAE,EAAE,OAAO,EAAG,CAAC,EAClBJ,EAAG,OAAO,MAAO,GAAGE,EAAGE,CAAE,CAAC,EAC1B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,cAAc,kBAAmB,GAAGE,EAAGE,CAAE,CAAC,EAC7C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,eAAe,mBAAoB,GAAGE,EAAGE,CAAE,CAAC,EAC/C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,mBAAmB,uBAAwB,GAAGE,EAAGE,CAAE,CAAC,EACvD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACH,KAAK,EAAI,CAACF,EAAGE,CAAE,CAAC,EAChB,MACF,IAAK,IACHF,EAAGE,CAAE,EAAE,QAAQF,EAAGE,EAAK,CAAC,CAAC,EACzB,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACL,IAAK,IACH,KAAK,EAAIF,EAAGE,CAAE,EAAE,KAAK,EACrB,MACF,IAAK,IACH,IAAIC,GAAK,CAAC,EACVA,GAAGH,EAAGE,EAAK,CAAC,EAAE,KAAK,CAAC,EAAIF,EAAGE,CAAE,EAAE,KAAK,EACpC,KAAK,EAAIC,GACT,MACF,IAAK,IACH,KAAK,EAAI,GACT,KACJ,CACF,EACA,MAAO,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,EAAE,EAAG,GAAI,CAAC,EAAG,EAAE,EAAG,GAAI,CAAC,EAAG,EAAE,EAAG,GAAI,CAAC,EAAG,EAAE,CAAE,EAAG,CAAE,EAAG,CAAC,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,GAAI,CAAC,EAAG,EAAE,CAAE,EAAG,CAAE,GAAI,CAAC,EAAG,EAAE,CAAE,EAAG,CAAE,GAAI,CAAC,EAAG,EAAE,CAAE,EAAG,CAAE,GAAI,CAAC,EAAG,EAAE,CAAE,EAAG,CAAE,GAAI,CAAC,EAAG,EAAE,CAAE,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIhE,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,EAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI1C,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,EAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI1C,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,EAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI1C,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,EAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI1C,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,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", + "names": ["import_sanitize_url", "import_dayjs", "import_dompurify", "parser", "o", "k", "v", "o2", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "parser2", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "kv", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "TERROR", "EOF", "args", "lexer2", "sharedState", "yyloc", "ranges", "lex", "token", "symbol", "state", "action", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "n", "past", "next", "pre", "c2", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "Parser", "parser$1", "c4ShapeArray", "boundaryParseStack", "currentBoundaryParse", "parentBoundaryParse", "boundarys", "rels", "title", "wrapEnabled", "c4ShapeInRow$1", "c4BoundaryInRow$1", "c4Type", "getC4Type", "setC4Type", "c4TypeParam", "sanitizeText$2", "getConfig$1", "addRel", "type", "from", "to", "label", "techn", "descr", "sprite", "tags", "link", "rel", "old", "rel2", "key", "value", "autoWrap", "addPersonOrSystem", "typeC4Shape", "alias", "personOrSystem", "personOrSystem2", "addContainer", "container", "container2", "addComponent", "component", "component2", "addPersonOrSystemBoundary", "boundary", "boundary2", "addContainerBoundary", "addDeploymentNode", "nodeType", "popBoundaryParseStack", "updateElStyle", "elementName", "bgColor", "fontColor", "borderColor", "shadowing", "shape", "legendText", "legendSprite", "element", "updateRelStyle", "textColor", "lineColor", "offsetX", "offsetY", "updateLayoutConfig", "c4ShapeInRowParam", "c4BoundaryInRowParam", "c4ShapeInRowValue", "c4BoundaryInRowValue", "getC4ShapeInRow", "getC4BoundaryInRow", "getCurrentBoundaryParse", "getParentBoundaryParse", "getC4ShapeArray", "parentBoundary", "getC4Shape", "getC4ShapeKeys", "getBoundarys", "getRels", "getTitle", "setWrap", "wrapSetting", "clear", "LINETYPE", "ARROWTYPE", "PLACEMENT", "setTitle", "txt", "db", "setAccTitle", "getAccTitle", "getAccDescription", "setAccDescription", "drawRect", "elem", "rectData", "drawImage", "width", "height", "x", "y", "imageElem", "sanitizedLink", "drawRels$1", "rels2", "conf2", "relsElem", "strokeColor", "url", "line", "messageConf", "_drawTextCandidateFunc", "drawBoundary$1", "boundaryElem", "fillColor", "attrsValue", "boundaryConf", "drawC4Shape", "c4Shape", "_a", "personImg", "c4ShapeElem", "rect", "getNoteRect", "c4ShapeFontConf", "getC4ShapeFont", "textFontConf", "insertDatabaseIcon", "insertComputerIcon", "insertClockIcon", "insertArrowHead", "insertArrowEnd", "insertArrowFilledHead", "insertDynamicNumber", "insertArrowCrossHead", "marker", "cnf", "byText", "content", "g", "textAttrs", "text", "_setTextAttrs", "byTspan", "fontSize", "fontFamily", "fontWeight", "common$1", "dy", "byFo", "s", "toText", "fromTextAttrsDict", "svgDraw", "globalBoundaryMaxX", "globalBoundaryMaxY", "c4ShapeInRow", "c4BoundaryInRow", "conf", "Bounds", "diagObj", "setConf", "startx", "stopx", "starty", "stopy", "obj", "val", "fun", "_startx", "_stopx", "_starty", "_stopy", "margin", "assignWithDepth$1", "c4ShapeFont", "boundaryFont", "messageFont", "calcC4ShapeTextWH", "textType", "c4ShapeTextWrap", "textConf", "textLimitWidth", "wrapLabel", "calculateTextHeight", "lineHeight", "calculateTextWidth", "drawBoundary", "diagram2", "bounds", "boundaryTextWrap", "boundaryLabelConf", "drawC4ShapeArray", "currentBounds", "c4ShapeArray2", "c4ShapeKeys", "Y", "c4ShapeKey", "c4ShapeTypeConf", "c4ShapeLabelConf", "c4ShapeTypeConf2", "c4ShapeTechnConf", "rectHeight", "rectWidth", "c4ShapeDescrConf", "Point", "getIntersectPoint", "fromNode", "endPoint", "x1", "y1", "x2", "y2", "fromCenterX", "fromCenterY", "dx", "tanDYX", "fromDYX", "returnPoint", "getIntersectPoints", "endNode", "endIntersectPoint", "startPoint", "drawRels", "getC4ShapeObj", "relTextWrap", "relConf", "points", "drawInsideBoundary", "parentBoundaryAlias", "parentBounds", "currentBoundaries", "currentBoundary", "currentBoundaryTextWrap", "currentBoundaryLabelConf", "currentBoundaryTypeConf", "currentBoundaryDescrConf", "_x", "_y", "currentPersonOrSystemArray", "currentPersonOrSystemKeys", "nextCurrentBoundarys", "draw", "_text", "id", "_version", "securityLevel", "sandboxElement", "select_default", "root", "db2", "log$1", "screenBounds", "title2", "box", "configureSvgSize", "extraVertForTitle", "renderer", "getStyles", "options", "styles", "diagram", "c4", "wrap"] +} diff --git a/public/chunk-334IV3XH.min.js b/public/chunk-334IV3XH.min.js new file mode 100644 index 0000000..5b68634 --- /dev/null +++ b/public/chunk-334IV3XH.min.js @@ -0,0 +1,22 @@ +import{b as k}from"./chunk-P42HNYSU.min.js";var v=k((h,j)=>{(function(e,n){typeof define=="function"&&define.amd?define(n):typeof h=="object"?j.exports=n():n()(e.lunr)})(h,function(){return function(e){if(typeof e>"u")throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(typeof e.stemmerSupport>"u")throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var n=e.version[0]=="2";e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),n?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var F=new e.TinySegmenter;e.ja.tokenizer=function(s){var t,i,f,o,a,d,g,p,r,c;if(!arguments.length||s==null||s==null)return[];if(Array.isArray(s))return s.map(function(m){return n?new e.Token(m.toLowerCase()):m.toLowerCase()});for(i=s.toString().toLowerCase().replace(/^\s+/,""),t=i.length-1;t>=0;t--)if(/\S/.test(i.charAt(t))){i=i.substring(0,t+1);break}for(a=[],f=i.length,r=0,p=0;r<=f;r++)if(d=i.charAt(r),g=r-p,d.match(/\s/)||r==f){if(g>0)for(o=F.segment(i.slice(p,r)).filter(function(m){return!!m}),c=p,t=0;t 1.0.0\n this.tokenizerFn = lunr.ja.tokenizer;\n }\n }\n };\n var segmenter = new lunr.TinySegmenter(); // \u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u751F\u6210\n\n lunr.ja.tokenizer = function(obj) {\n var i;\n var str;\n var len;\n var segs;\n var tokens;\n var char;\n var sliceLength;\n var sliceStart;\n var sliceEnd;\n var segStart;\n\n if (!arguments.length || obj == null || obj == undefined)\n return [];\n\n if (Array.isArray(obj)) {\n return obj.map(\n function(t) {\n return isLunr2 ? new lunr.Token(t.toLowerCase()) : t.toLowerCase();\n }\n );\n }\n\n str = obj.toString().toLowerCase().replace(/^\\s+/, '');\n for (i = str.length - 1; i >= 0; i--) {\n if (/\\S/.test(str.charAt(i))) {\n str = str.substring(0, i + 1);\n break;\n }\n }\n\n tokens = [];\n len = str.length;\n for (sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n char = str.charAt(sliceEnd);\n sliceLength = sliceEnd - sliceStart;\n\n if ((char.match(/\\s/) || sliceEnd == len)) {\n if (sliceLength > 0) {\n segs = segmenter.segment(str.slice(sliceStart, sliceEnd)).filter(\n function(token) {\n return !!token;\n }\n );\n\n segStart = sliceStart;\n for (i = 0; i < segs.length; i++) {\n if (isLunr2) {\n tokens.push(\n new lunr.Token(\n segs[i], {\n position: [segStart, segs[i].length],\n index: tokens.length\n }\n )\n );\n } else {\n tokens.push(segs[i]);\n }\n segStart += segs[i].length;\n }\n }\n\n sliceStart = sliceEnd + 1;\n }\n }\n\n return tokens;\n }\n\n /* lunr stemmer function */\n lunr.ja.stemmer = (function() {\n\n /* TODO japanese stemmer */\n return function(word) {\n return word;\n }\n })();\n lunr.Pipeline.registerFunction(lunr.ja.stemmer, 'stemmer-ja');\n\n /* lunr trimmer function */\n lunr.ja.wordCharacters = \"\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u767E\u5343\u4E07\u5104\u5146\u4E00-\u9FA0\u3005\u3006\u30F5\u30F6\u3041-\u3093\u30A1-\u30F4\u30FC\uFF71-\uFF9D\uFF9Ea-zA-Z\uFF41-\uFF5A\uFF21-\uFF3A0-9\uFF10-\uFF19\";\n lunr.ja.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.ja.wordCharacters);\n lunr.Pipeline.registerFunction(lunr.ja.trimmer, 'trimmer-ja');\n\n /* lunr stop word filter. see http://www.ranks.nl/stopwords/japanese */\n lunr.ja.stopWordFilter = lunr.generateStopWordFilter(\n '\u3053\u308C \u305D\u308C \u3042\u308C \u3053\u306E \u305D\u306E \u3042\u306E \u3053\u3053 \u305D\u3053 \u3042\u305D\u3053 \u3053\u3061\u3089 \u3069\u3053 \u3060\u308C \u306A\u306B \u306A\u3093 \u4F55 \u79C1 \u8CB4\u65B9 \u8CB4\u65B9\u65B9 \u6211\u3005 \u79C1\u9054 \u3042\u306E\u4EBA \u3042\u306E\u304B\u305F \u5F7C\u5973 \u5F7C \u3067\u3059 \u3042\u308A\u307E\u3059 \u304A\u308A\u307E\u3059 \u3044\u307E\u3059 \u306F \u304C \u306E \u306B \u3092 \u3067 \u3048 \u304B\u3089 \u307E\u3067 \u3088\u308A \u3082 \u3069\u306E \u3068 \u3057 \u305D\u308C\u3067 \u3057\u304B\u3057'.split(' '));\n lunr.Pipeline.registerFunction(lunr.ja.stopWordFilter, 'stopWordFilter-ja');\n\n // alias ja => jp for backward-compatibility.\n // jp is the country code, while ja is the language code\n // a new lunr.ja.js has been created, but in order to\n // keep the backward compatibility, we'll leave the lunr.jp.js\n // here for a while, and just make it use the new lunr.ja.js\n lunr.jp = lunr.ja;\n lunr.Pipeline.registerFunction(lunr.jp.stemmer, 'stemmer-jp');\n lunr.Pipeline.registerFunction(lunr.jp.trimmer, 'trimmer-jp');\n lunr.Pipeline.registerFunction(lunr.jp.stopWordFilter, 'stopWordFilter-jp');\n };\n}))"], + "mappings": "4CAAA,IAAAA,EAAAC,EAAA,CAAAC,EAAAC,IAAA,EAsBC,SAASC,EAAMC,EAAS,CACnB,OAAO,QAAW,YAAc,OAAO,IAEzC,OAAOA,CAAO,EACL,OAAOH,GAAY,SAM5BC,EAAO,QAAUE,EAAQ,EAGzBA,EAAQ,EAAED,EAAK,IAAI,CAEvB,GAAEF,EAAM,UAAW,CAMjB,OAAO,SAASI,EAAM,CAEpB,GAAoB,OAAOA,EAAvB,IACF,MAAM,IAAI,MAAM,wEAAwE,EAI1F,GAAoB,OAAOA,EAAK,eAA5B,IACF,MAAM,IAAI,MAAM,wGAAwG,EAW1H,IAAIC,EAAUD,EAAK,QAAQ,CAAC,GAAK,IAGjCA,EAAK,GAAK,UAAW,CACnB,KAAK,SAAS,MAAM,EACpB,KAAK,SAAS,IACZA,EAAK,GAAG,QACRA,EAAK,GAAG,eACRA,EAAK,GAAG,OACV,EAGIC,EACF,KAAK,UAAYD,EAAK,GAAG,WAErBA,EAAK,YACPA,EAAK,UAAYA,EAAK,GAAG,WAEvB,KAAK,cACP,KAAK,YAAcA,EAAK,GAAG,WAGjC,EACA,IAAIE,EAAY,IAAIF,EAAK,cAEzBA,EAAK,GAAG,UAAY,SAASG,EAAK,CAChC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,GAAI,CAAC,UAAU,QAAUV,GAAO,MAAQA,GAAO,KAC7C,MAAO,CAAC,EAEV,GAAI,MAAM,QAAQA,CAAG,EACnB,OAAOA,EAAI,IACT,SAASW,EAAG,CACV,OAAOb,EAAU,IAAID,EAAK,MAAMc,EAAE,YAAY,CAAC,EAAIA,EAAE,YAAY,CACnE,CACF,EAIF,IADAT,EAAMF,EAAI,SAAS,EAAE,YAAY,EAAE,QAAQ,OAAQ,EAAE,EAChDC,EAAIC,EAAI,OAAS,EAAGD,GAAK,EAAGA,IAC/B,GAAI,KAAK,KAAKC,EAAI,OAAOD,CAAC,CAAC,EAAG,CAC5BC,EAAMA,EAAI,UAAU,EAAGD,EAAI,CAAC,EAC5B,KACF,CAKF,IAFAI,EAAS,CAAC,EACVF,EAAMD,EAAI,OACLO,EAAW,EAAGD,EAAa,EAAGC,GAAYN,EAAKM,IAIlD,GAHAH,EAAOJ,EAAI,OAAOO,CAAQ,EAC1BF,EAAcE,EAAWD,EAEpBF,EAAK,MAAM,IAAI,GAAKG,GAAYN,EAAM,CACzC,GAAII,EAAc,EAQhB,IAPAH,EAAOL,EAAU,QAAQG,EAAI,MAAMM,EAAYC,CAAQ,CAAC,EAAE,OACxD,SAASG,EAAO,CACd,MAAO,CAAC,CAACA,CACX,CACF,EAEAF,EAAWF,EACNP,EAAI,EAAGA,EAAIG,EAAK,OAAQH,IACvBH,EACFO,EAAO,KACL,IAAIR,EAAK,MACPO,EAAKH,CAAC,EAAG,CACP,SAAU,CAACS,EAAUN,EAAKH,CAAC,EAAE,MAAM,EACnC,MAAOI,EAAO,MAChB,CACF,CACF,EAEAA,EAAO,KAAKD,EAAKH,CAAC,CAAC,EAErBS,GAAYN,EAAKH,CAAC,EAAE,OAIxBO,EAAaC,EAAW,CAC1B,CAGF,OAAOJ,CACT,EAGAR,EAAK,GAAG,QAAW,UAAW,CAG5B,OAAO,SAASgB,EAAM,CACpB,OAAOA,CACT,CACF,EAAG,EACHhB,EAAK,SAAS,iBAAiBA,EAAK,GAAG,QAAS,YAAY,EAG5DA,EAAK,GAAG,eAAiB,qOACzBA,EAAK,GAAG,QAAUA,EAAK,eAAe,gBAAgBA,EAAK,GAAG,cAAc,EAC5EA,EAAK,SAAS,iBAAiBA,EAAK,GAAG,QAAS,YAAY,EAG5DA,EAAK,GAAG,eAAiBA,EAAK,uBAC5B,8jBAAsI,MAAM,GAAG,CAAC,EAClJA,EAAK,SAAS,iBAAiBA,EAAK,GAAG,eAAgB,mBAAmB,EAO1EA,EAAK,GAAKA,EAAK,GACfA,EAAK,SAAS,iBAAiBA,EAAK,GAAG,QAAS,YAAY,EAC5DA,EAAK,SAAS,iBAAiBA,EAAK,GAAG,QAAS,YAAY,EAC5DA,EAAK,SAAS,iBAAiBA,EAAK,GAAG,eAAgB,mBAAmB,CAC5E,CACF,CAAC", + "names": ["require_lunr_ja", "__commonJSMin", "exports", "module", "root", "factory", "lunr", "isLunr2", "segmenter", "obj", "i", "str", "len", "segs", "tokens", "char", "sliceLength", "sliceStart", "sliceEnd", "segStart", "t", "token", "word"] +} diff --git a/public/chunk-7J266ZII.min.js b/public/chunk-7J266ZII.min.js new file mode 100644 index 0000000..0208332 --- /dev/null +++ b/public/chunk-7J266ZII.min.js @@ -0,0 +1,111 @@ +import{a as q}from"./chunk-FFBLGSWC.min.js";import{j as R}from"./chunk-LLUSN4ZV.min.js";import{$a as _,E as $,Fa as u,Ia as F,J as G,K as P,Ka as N,Pa as E,Qa as L,S as V,Ya as H,cb as U,h as T,i as z,la as M}from"./chunk-DJFTDYIK.min.js";function oe(e,l){return!!e.children(l).length}function ne(e){return A(e.v)+":"+A(e.w)+":"+A(e.name)}var Q=/:/g;function A(e){return e?String(e).replace(Q,"\\:"):""}function j(e,l){l&&e.attr("style",l)}function se(e,l,c){l&&e.attr("class",l).attr("class",c+" "+e.attr("class"))}function ie(e,l){var c=l.graph();if(M(c)){var a=c.transition;if(V(a))return a(e)}return e}function W(e,l){var c=e.append("foreignObject").attr("width","100000"),a=c.append("xhtml:div");a.attr("xmlns","http://www.w3.org/1999/xhtml");var i=l.label;switch(typeof i){case"function":a.insert(i);break;case"object":a.insert(function(){return i});break;default:a.html(i)}j(a,l.labelStyle),a.style("display","inline-block"),a.style("white-space","nowrap");var d=a.node().getBoundingClientRect();return c.attr("width",d.width).attr("height",d.height),c}var X={},Z=function(e){let l=Object.keys(e);for(let c of l)X[c]=e[c]},J=function(e,l,c,a,i,d){let h=a.select(`[id="${c}"]`);Object.keys(e).forEach(function(p){let r=e[p],g="default";r.classes.length>0&&(g=r.classes.join(" ")),g=g+" flowchart-label";let w=L(r.styles),t=r.text!==void 0?r.text:r.id,s;if(u.info("vertex",r,r.labelType),r.labelType==="markdown")u.info("vertex",r,r.labelType);else if(F(_().flowchart.htmlLabels)){let m={label:t.replace(/fa[blrs]?:fa-[\w-]+/g,k=>``)};s=W(h,m).node(),s.parentNode.removeChild(s)}else{let m=i.createElementNS("http://www.w3.org/2000/svg","text");m.setAttribute("style",w.labelStyle.replace("color:","fill:"));let k=t.split(N.lineBreakRegex);for(let C of k){let v=i.createElementNS("http://www.w3.org/2000/svg","tspan");v.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),v.setAttribute("dy","1em"),v.setAttribute("x","1"),v.textContent=C,m.appendChild(v)}s=m}let b=0,o="";switch(r.type){case"round":b=5,o="rect";break;case"square":o="rect";break;case"diamond":o="question";break;case"hexagon":o="hexagon";break;case"odd":o="rect_left_inv_arrow";break;case"lean_right":o="lean_right";break;case"lean_left":o="lean_left";break;case"trapezoid":o="trapezoid";break;case"inv_trapezoid":o="inv_trapezoid";break;case"odd_right":o="rect_left_inv_arrow";break;case"circle":o="circle";break;case"ellipse":o="ellipse";break;case"stadium":o="stadium";break;case"subroutine":o="subroutine";break;case"cylinder":o="cylinder";break;case"group":o="rect";break;case"doublecircle":o="doublecircle";break;default:o="rect"}l.setNode(r.id,{labelStyle:w.labelStyle,shape:o,labelText:t,labelType:r.labelType,rx:b,ry:b,class:g,style:w.style,id:r.id,link:r.link,linkTarget:r.linkTarget,tooltip:d.db.getTooltip(r.id)||"",domId:d.db.lookUpDomId(r.id),haveCallback:r.haveCallback,width:r.type==="group"?500:void 0,dir:r.dir,type:r.type,props:r.props,padding:_().flowchart.padding}),u.info("setNode",{labelStyle:w.labelStyle,labelType:r.labelType,shape:o,labelText:t,rx:b,ry:b,class:g,style:w.style,id:r.id,domId:d.db.lookUpDomId(r.id),width:r.type==="group"?500:void 0,type:r.type,dir:r.dir,props:r.props,padding:_().flowchart.padding})})},K=function(e,l,c){u.info("abc78 edges = ",e);let a=0,i={},d,h;if(e.defaultStyle!==void 0){let n=L(e.defaultStyle);d=n.style,h=n.labelStyle}e.forEach(function(n){a++;let p="L-"+n.start+"-"+n.end;i[p]===void 0?(i[p]=0,u.info("abc78 new entry",p,i[p])):(i[p]++,u.info("abc78 new entry",p,i[p]));let r=p+"-"+i[p];u.info("abc78 new link id to be used is",p,r,i[p]);let g="LS-"+n.start,w="LE-"+n.end,t={style:"",labelStyle:""};switch(t.minlen=n.length||1,n.type==="arrow_open"?t.arrowhead="none":t.arrowhead="normal",t.arrowTypeStart="arrow_open",t.arrowTypeEnd="arrow_open",n.type){case"double_arrow_cross":t.arrowTypeStart="arrow_cross";case"arrow_cross":t.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":t.arrowTypeStart="arrow_point";case"arrow_point":t.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":t.arrowTypeStart="arrow_circle";case"arrow_circle":t.arrowTypeEnd="arrow_circle";break}let s="",b="";switch(n.stroke){case"normal":s="fill:none;",d!==void 0&&(s=d),h!==void 0&&(b=h),t.thickness="normal",t.pattern="solid";break;case"dotted":t.thickness="normal",t.pattern="dotted",t.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":t.thickness="thick",t.pattern="solid",t.style="stroke-width: 3.5px;fill:none;";break;case"invisible":t.thickness="invisible",t.pattern="solid",t.style="stroke-width: 0;fill:none;";break}if(n.style!==void 0){let o=L(n.style);s=o.style,b=o.labelStyle}t.style=t.style+=s,t.labelStyle=t.labelStyle+=b,n.interpolate!==void 0?t.curve=E(n.interpolate,$):e.defaultInterpolate!==void 0?t.curve=E(e.defaultInterpolate,$):t.curve=E(X.curve,$),n.text===void 0?n.style!==void 0&&(t.arrowheadStyle="fill: #333"):(t.arrowheadStyle="fill: #333",t.labelpos="c"),t.labelType=n.labelType,t.label=n.text.replace(N.lineBreakRegex,` +`),n.style===void 0&&(t.style=t.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),t.labelStyle=t.labelStyle.replace("color:","fill:"),t.id=r,t.classes="flowchart-link "+g+" "+w,l.setEdge(n.start,n.end,t,a)})},O=function(e,l){return l.db.getClasses()},ee=async function(e,l,c,a){u.info("Drawing flowchart");let i=a.db.getDirection();i===void 0&&(i="TD");let{securityLevel:d,flowchart:h}=_(),n=h.nodeSpacing||50,p=h.rankSpacing||50,r;d==="sandbox"&&(r=T("#i"+l));let g=d==="sandbox"?T(r.nodes()[0].contentDocument.body):T("body"),w=d==="sandbox"?r.nodes()[0].contentDocument:document,t=new R({multigraph:!0,compound:!0}).setGraph({rankdir:i,nodesep:n,ranksep:p,marginx:0,marginy:0}).setDefaultEdgeLabel(function(){return{}}),s,b=a.db.getSubGraphs();u.info("Subgraphs - ",b);for(let f=b.length-1;f>=0;f--)s=b[f],u.info("Subgraph - ",s),a.db.addVertex(s.id,{text:s.title,type:s.labelType},"group",void 0,s.classes,s.dir);let o=a.db.getVertices(),m=a.db.getEdges();u.info("Edges",m);let k=0;for(k=b.length-1;k>=0;k--){s=b[k],z("cluster").append("text");for(let f=0;f{let c=P,a=c(e,"r"),i=c(e,"g"),d=c(e,"b");return G(a,i,d,l)},re=e=>`.label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span,p { + color: ${e.titleColor}; + } + + .label text,span,p { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${te(e.edgeLabelBackground,.5)}; + // background-color: + } + + .cluster rect { + fill: ${e.clusterBkg}; + stroke: ${e.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span,p { + color: ${e.titleColor}; + } + /* .cluster div { + color: ${e.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } +`,ye=re;export{oe as a,ne as b,j as c,se as d,ie as e,W as f,we as g,ye as h}; +//# sourceMappingURL=chunk-7J266ZII.min.js.map diff --git a/public/chunk-7J266ZII.min.js.map b/public/chunk-7J266ZII.min.js.map new file mode 100644 index 0000000..68a3896 --- /dev/null +++ b/public/chunk-7J266ZII.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/dagre-d3-es/src/dagre-js/util.js", "../../node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js", "../../node_modules/mermaid/dist/styles-3bbdb1fe.js"], + "sourcesContent": ["import * as _ from 'lodash-es';\n\n// Public utility functions\nexport { isSubgraph, edgeToId, applyStyle, applyClass, applyTransition };\n\n/*\n * Returns true if the specified node in the graph is a subgraph node. A\n * subgraph node is one that contains other nodes.\n */\nfunction isSubgraph(g, v) {\n return !!g.children(v).length;\n}\n\nfunction edgeToId(e) {\n return escapeId(e.v) + ':' + escapeId(e.w) + ':' + escapeId(e.name);\n}\n\nvar ID_DELIM = /:/g;\nfunction escapeId(str) {\n return str ? String(str).replace(ID_DELIM, '\\\\:') : '';\n}\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\nfunction applyClass(dom, classFn, otherClasses) {\n if (classFn) {\n dom.attr('class', classFn).attr('class', otherClasses + ' ' + dom.attr('class'));\n }\n}\n\nfunction applyTransition(selection, g) {\n var graph = g.graph();\n\n if (_.isPlainObject(graph)) {\n var transition = graph.transition;\n if (_.isFunction(transition)) {\n return transition(selection);\n }\n }\n\n return selection;\n}\n", "import * as util from '../util.js';\n\nexport { addHtmlLabel };\n\nfunction addHtmlLabel(root, node) {\n var fo = root.append('foreignObject').attr('width', '100000');\n\n var div = fo.append('xhtml:div');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n var label = node.label;\n switch (typeof label) {\n case 'function':\n div.insert(label);\n break;\n case 'object':\n // Currently we assume this is a DOM object.\n div.insert(function () {\n return label;\n });\n break;\n default:\n div.html(label);\n }\n\n util.applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n\n var client = div.node().getBoundingClientRect();\n fo.attr('width', client.width).attr('height', client.height);\n\n return fo;\n}\n", "import * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { curveLinear, select, selectAll } from \"d3\";\nimport { k as getStylesFromArray, l as log, m as evaluate, c as getConfig, e as common, n as interpolateToCurve, u as utils, o as setupGraphViewbox } from \"./mermaid-485fd1a4.js\";\nimport { r as render } from \"./index-b0b3af87.js\";\nimport { addHtmlLabel } from \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport * as khroma from \"khroma\";\nconst conf = {};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst addVertices = function(vert, g, svgId, root, doc, diagObj) {\n const svg = root.select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n keys.forEach(function(id) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n const styles = getStylesFromArray(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n let vertexNode;\n log.info(\"vertex\", vertex, vertex.labelType);\n if (vertex.labelType === \"markdown\") {\n log.info(\"vertex\", vertex, vertex.labelType);\n } else {\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const node = {\n label: vertexText.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", styles.labelStyle.replace(\"color:\", \"fill:\"));\n const rows = vertexText.split(common.lineBreakRegex);\n for (const row of rows) {\n const tspan = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"1\");\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n }\n let radious = 0;\n let _shape = \"\";\n switch (vertex.type) {\n case \"round\":\n radious = 5;\n _shape = \"rect\";\n break;\n case \"square\":\n _shape = \"rect\";\n break;\n case \"diamond\":\n _shape = \"question\";\n break;\n case \"hexagon\":\n _shape = \"hexagon\";\n break;\n case \"odd\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n _shape = \"lean_right\";\n break;\n case \"lean_left\":\n _shape = \"lean_left\";\n break;\n case \"trapezoid\":\n _shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n _shape = \"inv_trapezoid\";\n break;\n case \"odd_right\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n _shape = \"circle\";\n break;\n case \"ellipse\":\n _shape = \"ellipse\";\n break;\n case \"stadium\":\n _shape = \"stadium\";\n break;\n case \"subroutine\":\n _shape = \"subroutine\";\n break;\n case \"cylinder\":\n _shape = \"cylinder\";\n break;\n case \"group\":\n _shape = \"rect\";\n break;\n case \"doublecircle\":\n _shape = \"doublecircle\";\n break;\n default:\n _shape = \"rect\";\n }\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n labelType: vertex.labelType,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n link: vertex.link,\n linkTarget: vertex.linkTarget,\n tooltip: diagObj.db.getTooltip(vertex.id) || \"\",\n domId: diagObj.db.lookUpDomId(vertex.id),\n haveCallback: vertex.haveCallback,\n width: vertex.type === \"group\" ? 500 : void 0,\n dir: vertex.dir,\n type: vertex.type,\n props: vertex.props,\n padding: getConfig().flowchart.padding\n });\n log.info(\"setNode\", {\n labelStyle: styles.labelStyle,\n labelType: vertex.labelType,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n domId: diagObj.db.lookUpDomId(vertex.id),\n width: vertex.type === \"group\" ? 500 : void 0,\n type: vertex.type,\n dir: vertex.dir,\n props: vertex.props,\n padding: getConfig().flowchart.padding\n });\n });\n};\nconst addEdges = function(edges, g, diagObj) {\n log.info(\"abc78 edges = \", edges);\n let cnt = 0;\n let linkIdCnt = {};\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n edges.forEach(function(edge) {\n cnt++;\n const linkIdBase = \"L-\" + edge.start + \"-\" + edge.end;\n if (linkIdCnt[linkIdBase] === void 0) {\n linkIdCnt[linkIdBase] = 0;\n log.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n } else {\n linkIdCnt[linkIdBase]++;\n log.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n }\n let linkId = linkIdBase + \"-\" + linkIdCnt[linkIdBase];\n log.info(\"abc78 new link id to be used is\", linkIdBase, linkId, linkIdCnt[linkIdBase]);\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = { style: \"\", labelStyle: \"\" };\n edgeData.minlen = edge.length || 1;\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n edgeData.arrowTypeStart = \"arrow_open\";\n edgeData.arrowTypeEnd = \"arrow_open\";\n switch (edge.type) {\n case \"double_arrow_cross\":\n edgeData.arrowTypeStart = \"arrow_cross\";\n case \"arrow_cross\":\n edgeData.arrowTypeEnd = \"arrow_cross\";\n break;\n case \"double_arrow_point\":\n edgeData.arrowTypeStart = \"arrow_point\";\n case \"arrow_point\":\n edgeData.arrowTypeEnd = \"arrow_point\";\n break;\n case \"double_arrow_circle\":\n edgeData.arrowTypeStart = \"arrow_circle\";\n case \"arrow_circle\":\n edgeData.arrowTypeEnd = \"arrow_circle\";\n break;\n }\n let style = \"\";\n let labelStyle = \"\";\n switch (edge.stroke) {\n case \"normal\":\n style = \"fill:none;\";\n if (defaultStyle !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\n labelStyle = defaultLabelStyle;\n }\n edgeData.thickness = \"normal\";\n edgeData.pattern = \"solid\";\n break;\n case \"dotted\":\n edgeData.thickness = \"normal\";\n edgeData.pattern = \"dotted\";\n edgeData.style = \"fill:none;stroke-width:2px;stroke-dasharray:3;\";\n break;\n case \"thick\":\n edgeData.thickness = \"thick\";\n edgeData.pattern = \"solid\";\n edgeData.style = \"stroke-width: 3.5px;fill:none;\";\n break;\n case \"invisible\":\n edgeData.thickness = \"invisible\";\n edgeData.pattern = \"solid\";\n edgeData.style = \"stroke-width: 0;fill:none;\";\n break;\n }\n if (edge.style !== void 0) {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n }\n edgeData.style = edgeData.style += style;\n edgeData.labelStyle = edgeData.labelStyle += labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n }\n edgeData.labelType = edge.labelType;\n edgeData.label = edge.text.replace(common.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none;\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n edgeData.id = linkId;\n edgeData.classes = \"flowchart-link \" + linkNameStart + \" \" + linkNameEnd;\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\nconst getClasses = function(text, diagObj) {\n return diagObj.db.getClasses();\n};\nconst draw = async function(text, id, _version, diagObj) {\n log.info(\"Drawing flowchart\");\n let dir = diagObj.db.getDirection();\n if (dir === void 0) {\n dir = \"TD\";\n }\n const { securityLevel, flowchart: conf2 } = getConfig();\n const nodeSpacing = conf2.nodeSpacing || 50;\n const rankSpacing = conf2.rankSpacing || 50;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 0,\n marginy: 0\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n log.info(\"Subgraphs - \", subGraphs);\n for (let i2 = subGraphs.length - 1; i2 >= 0; i2--) {\n subG = subGraphs[i2];\n log.info(\"Subgraph - \", subG);\n diagObj.db.addVertex(\n subG.id,\n { text: subG.title, type: subG.labelType },\n \"group\",\n void 0,\n subG.classes,\n subG.dir\n );\n }\n const vert = diagObj.db.getVertices();\n const edges = diagObj.db.getEdges();\n log.info(\"Edges\", edges);\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n selectAll(\"cluster\").append(\"text\");\n for (let j = 0; j < subG.nodes.length; j++) {\n log.info(\"Setting up subgraphs\", subG.nodes[j], subG.id);\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n addVertices(vert, g, id, root, doc, diagObj);\n addEdges(edges, g);\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n await render(element, g, [\"point\", \"circle\", \"cross\"], \"flowchart\", id);\n utils.insertTitle(svg, \"flowchartTitleText\", conf2.titleTopMargin, diagObj.db.getDiagramTitle());\n setupGraphViewbox(g, svg, conf2.diagramPadding, conf2.useMaxWidth);\n diagObj.db.indexNodes(\"subGraph\" + i);\n if (!conf2.htmlLabels) {\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n }\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n if (vertex.link) {\n const node = select(\"#\" + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"a\");\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"class\", vertex.classes.join(\" \"));\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"href\", vertex.link);\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"rel\", \"noopener\");\n if (securityLevel === \"sandbox\") {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", \"_top\");\n } else if (vertex.linkTarget) {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", vertex.linkTarget);\n }\n const linkNode = node.insert(function() {\n return link;\n }, \":first-child\");\n const shape = node.select(\".label-container\");\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n const label = node.select(\".label\");\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\nconst flowRendererV2 = {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\nconst fade = (color, opacity) => {\n const channel = khroma.channel;\n const r = channel(color, \"r\");\n const g = channel(color, \"g\");\n const b = channel(color, \"b\");\n return khroma.rgba(r, g, b, opacity);\n};\nconst getStyles = (options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${fade(options.edgeLabelBackground, 0.5)};\n // background-color: \n }\n\n .cluster rect {\n fill: ${options.clusterBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n`;\nconst flowStyles = getStyles;\nexport {\n flowStyles as a,\n flowRendererV2 as f\n};\n"], + "mappings": "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", + "names": ["isSubgraph", "g", "v", "edgeToId", "escapeId", "ID_DELIM", "str", "applyStyle", "dom", "styleFn", "applyClass", "classFn", "otherClasses", "applyTransition", "selection", "graph", "isPlainObject_default", "transition", "isFunction_default", "addHtmlLabel", "root", "node", "fo", "div", "label", "applyStyle", "client", "conf", "setConf", "cnf", "keys", "key", "addVertices", "vert", "g", "svgId", "root", "doc", "diagObj", "svg", "id", "vertex", "classStr", "styles", "getStylesFromArray", "vertexText", "vertexNode", "log$1", "evaluate", "getConfig$1", "node", "s", "addHtmlLabel", "svgLabel", "rows", "common$1", "row", "tspan", "radious", "_shape", "addEdges", "edges", "cnt", "linkIdCnt", "defaultStyle", "defaultLabelStyle", "defaultStyles", "edge", "linkIdBase", "linkId", "linkNameStart", "linkNameEnd", "edgeData", "style", "labelStyle", "interpolateToCurve", "linear_default", "getClasses", "text", "draw", "_version", "dir", "securityLevel", "conf2", "nodeSpacing", "rankSpacing", "sandboxElement", "select_default", "Graph", "subG", "subGraphs", "i2", "i", "selectAll_default", "j", "element", "render", "utils", "setupGraphViewbox$1", "labels", "label", "dim", "rect", "link", "linkNode", "shape", "flowRendererV2", "fade", "color", "opacity", "channel", "channel_default", "r", "b", "rgba_default", "getStyles", "options", "flowStyles"] +} diff --git a/public/chunk-BQZXUJB5.min.js b/public/chunk-BQZXUJB5.min.js new file mode 100644 index 0000000..b495c1e --- /dev/null +++ b/public/chunk-BQZXUJB5.min.js @@ -0,0 +1,2 @@ +import{Ga as o,c as l}from"./chunk-DJFTDYIK.min.js";import{d as c}from"./chunk-P42HNYSU.min.js";var i=c(l(),1);var x=(s,t)=>{let r=s.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.rx!==void 0&&r.attr("rx",t.rx),t.ry!==void 0&&r.attr("ry",t.ry),t.attrs!==void 0)for(let e in t.attrs)r.attr(e,t.attrs[e]);return t.class!==void 0&&r.attr("class",t.class),r},h=(s,t)=>{let r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};x(s,r).lower()},y=(s,t)=>{let r=t.text.replace(o," "),e=s.append("text");e.attr("x",t.x),e.attr("y",t.y),e.attr("class","legend"),e.style("text-anchor",t.anchor),t.class!==void 0&&e.attr("class",t.class);let n=e.append("tspan");return n.attr("x",t.x+t.textMargin*2),n.text(r),e},p=(s,t,r,e)=>{let n=s.append("image");n.attr("x",t),n.attr("y",r);let a=(0,i.sanitizeUrl)(e);n.attr("xlink:href",a)},g=(s,t,r,e)=>{let n=s.append("use");n.attr("x",t),n.attr("y",r);let a=(0,i.sanitizeUrl)(e);n.attr("xlink:href",`#${a}`)},m=()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),f=()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0});export{x as a,h as b,y as c,p as d,g as e,m as f,f as g}; +//# sourceMappingURL=chunk-BQZXUJB5.min.js.map diff --git a/public/chunk-BQZXUJB5.min.js.map b/public/chunk-BQZXUJB5.min.js.map new file mode 100644 index 0000000..83ceb9f --- /dev/null +++ b/public/chunk-BQZXUJB5.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/mermaid/dist/svgDrawCommon-43c67fcf.js"], + "sourcesContent": ["import { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport { H as lineBreakRegex } from \"./mermaid-485fd1a4.js\";\nconst drawRect = (element, rectData) => {\n const rectElement = element.append(\"rect\");\n rectElement.attr(\"x\", rectData.x);\n rectElement.attr(\"y\", rectData.y);\n rectElement.attr(\"fill\", rectData.fill);\n rectElement.attr(\"stroke\", rectData.stroke);\n rectElement.attr(\"width\", rectData.width);\n rectElement.attr(\"height\", rectData.height);\n rectData.rx !== void 0 && rectElement.attr(\"rx\", rectData.rx);\n rectData.ry !== void 0 && rectElement.attr(\"ry\", rectData.ry);\n if (rectData.attrs !== void 0) {\n for (const attrKey in rectData.attrs) {\n rectElement.attr(attrKey, rectData.attrs[attrKey]);\n }\n }\n rectData.class !== void 0 && rectElement.attr(\"class\", rectData.class);\n return rectElement;\n};\nconst drawBackgroundRect = (element, bounds) => {\n const rectData = {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n stroke: bounds.stroke,\n class: \"rect\"\n };\n const rectElement = drawRect(element, rectData);\n rectElement.lower();\n};\nconst drawText = (element, textData) => {\n const nText = textData.text.replace(lineBreakRegex, \" \");\n const textElem = element.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.attr(\"class\", \"legend\");\n textElem.style(\"text-anchor\", textData.anchor);\n textData.class !== void 0 && textElem.attr(\"class\", textData.class);\n const tspan = textElem.append(\"tspan\");\n tspan.attr(\"x\", textData.x + textData.textMargin * 2);\n tspan.text(nText);\n return textElem;\n};\nconst drawImage = (elem, x, y, link) => {\n const imageElement = elem.append(\"image\");\n imageElement.attr(\"x\", x);\n imageElement.attr(\"y\", y);\n const sanitizedLink = sanitizeUrl(link);\n imageElement.attr(\"xlink:href\", sanitizedLink);\n};\nconst drawEmbeddedImage = (element, x, y, link) => {\n const imageElement = element.append(\"use\");\n imageElement.attr(\"x\", x);\n imageElement.attr(\"y\", y);\n const sanitizedLink = sanitizeUrl(link);\n imageElement.attr(\"xlink:href\", `#${sanitizedLink}`);\n};\nconst getNoteRect = () => {\n const noteRectData = {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n fill: \"#EDF2AE\",\n stroke: \"#666\",\n anchor: \"start\",\n rx: 0,\n ry: 0\n };\n return noteRectData;\n};\nconst getTextObj = () => {\n const testObject = {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n \"text-anchor\": \"start\",\n style: \"#666\",\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true\n };\n return testObject;\n};\nexport {\n drawBackgroundRect as a,\n drawEmbeddedImage as b,\n drawImage as c,\n drawRect as d,\n getTextObj as e,\n drawText as f,\n getNoteRect as g\n};\n"], + "mappings": "gGAAA,IAAAA,EAA4B,SAE5B,IAAMC,EAAW,CAACC,EAASC,IAAa,CACtC,IAAMC,EAAcF,EAAQ,OAAO,MAAM,EASzC,GARAE,EAAY,KAAK,IAAKD,EAAS,CAAC,EAChCC,EAAY,KAAK,IAAKD,EAAS,CAAC,EAChCC,EAAY,KAAK,OAAQD,EAAS,IAAI,EACtCC,EAAY,KAAK,SAAUD,EAAS,MAAM,EAC1CC,EAAY,KAAK,QAASD,EAAS,KAAK,EACxCC,EAAY,KAAK,SAAUD,EAAS,MAAM,EAC1CA,EAAS,KAAO,QAAUC,EAAY,KAAK,KAAMD,EAAS,EAAE,EAC5DA,EAAS,KAAO,QAAUC,EAAY,KAAK,KAAMD,EAAS,EAAE,EACxDA,EAAS,QAAU,OACrB,QAAWE,KAAWF,EAAS,MAC7BC,EAAY,KAAKC,EAASF,EAAS,MAAME,CAAO,CAAC,EAGrD,OAAAF,EAAS,QAAU,QAAUC,EAAY,KAAK,QAASD,EAAS,KAAK,EAC9DC,CACT,EACME,EAAqB,CAACJ,EAASK,IAAW,CAC9C,IAAMJ,EAAW,CACf,EAAGI,EAAO,OACV,EAAGA,EAAO,OACV,MAAOA,EAAO,MAAQA,EAAO,OAC7B,OAAQA,EAAO,MAAQA,EAAO,OAC9B,KAAMA,EAAO,KACb,OAAQA,EAAO,OACf,MAAO,MACT,EACoBN,EAASC,EAASC,CAAQ,EAClC,MAAM,CACpB,EACMK,EAAW,CAACN,EAASO,IAAa,CACtC,IAAMC,EAAQD,EAAS,KAAK,QAAQE,EAAgB,GAAG,EACjDC,EAAWV,EAAQ,OAAO,MAAM,EACtCU,EAAS,KAAK,IAAKH,EAAS,CAAC,EAC7BG,EAAS,KAAK,IAAKH,EAAS,CAAC,EAC7BG,EAAS,KAAK,QAAS,QAAQ,EAC/BA,EAAS,MAAM,cAAeH,EAAS,MAAM,EAC7CA,EAAS,QAAU,QAAUG,EAAS,KAAK,QAASH,EAAS,KAAK,EAClE,IAAMI,EAAQD,EAAS,OAAO,OAAO,EACrC,OAAAC,EAAM,KAAK,IAAKJ,EAAS,EAAIA,EAAS,WAAa,CAAC,EACpDI,EAAM,KAAKH,CAAK,EACTE,CACT,EACME,EAAY,CAACC,EAAMC,EAAGC,EAAGC,IAAS,CACtC,IAAMC,EAAeJ,EAAK,OAAO,OAAO,EACxCI,EAAa,KAAK,IAAKH,CAAC,EACxBG,EAAa,KAAK,IAAKF,CAAC,EACxB,IAAMG,KAAgB,eAAYF,CAAI,EACtCC,EAAa,KAAK,aAAcC,CAAa,CAC/C,EACMC,EAAoB,CAACnB,EAASc,EAAGC,EAAGC,IAAS,CACjD,IAAMC,EAAejB,EAAQ,OAAO,KAAK,EACzCiB,EAAa,KAAK,IAAKH,CAAC,EACxBG,EAAa,KAAK,IAAKF,CAAC,EACxB,IAAMG,KAAgB,eAAYF,CAAI,EACtCC,EAAa,KAAK,aAAc,IAAIC,CAAa,EAAE,CACrD,EACME,EAAc,KACG,CACnB,EAAG,EACH,EAAG,EACH,MAAO,IACP,OAAQ,IACR,KAAM,UACN,OAAQ,OACR,OAAQ,QACR,GAAI,EACJ,GAAI,CACN,GAGIC,EAAa,KACE,CACjB,EAAG,EACH,EAAG,EACH,MAAO,IACP,OAAQ,IACR,cAAe,QACf,MAAO,OACP,WAAY,EACZ,GAAI,EACJ,GAAI,EACJ,MAAO,EACT", + "names": ["import_sanitize_url", "drawRect", "element", "rectData", "rectElement", "attrKey", "drawBackgroundRect", "bounds", "drawText", "textData", "nText", "lineBreakRegex", "textElem", "tspan", "drawImage", "elem", "x", "y", "link", "imageElement", "sanitizedLink", "drawEmbeddedImage", "getNoteRect", "getTextObj"] +} diff --git a/public/chunk-DJFTDYIK.min.js b/public/chunk-DJFTDYIK.min.js new file mode 100644 index 0000000..a2a9242 --- /dev/null +++ b/public/chunk-DJFTDYIK.min.js @@ -0,0 +1,97 @@ +import{b as Pa,d as $a}from"./chunk-P42HNYSU.min.js";var _c=Pa((za,qa)=>{(function(t,e){typeof za=="object"&&typeof qa<"u"?qa.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(za,function(){"use strict";var t=1e3,e=6e4,r=36e5,i="millisecond",n="second",o="minute",a="hour",s="day",l="week",c="month",u="quarter",h="year",f="date",p="Invalid Date",x=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,b=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,T={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(C){var _=["th","st","nd","rd"],g=C%100;return"["+C+(_[(g-20)%10]||_[g]||_[0])+"]"}},B=function(C,_,g){var w=String(C);return!w||w.length>=_?C:""+Array(_+1-w.length).join(g)+C},v={s:B,z:function(C){var _=-C.utcOffset(),g=Math.abs(_),w=Math.floor(g/60),A=g%60;return(_<=0?"+":"-")+B(w,2,"0")+":"+B(A,2,"0")},m:function C(_,g){if(_.date()1)return C(P[0])}else{var j=_.name;E[j]=_,A=j}return!w&&A&&(M=A),A||!w&&M},y=function(C,_){if(I(C))return C.clone();var g=typeof _=="object"?_:{};return g.date=C,g.args=arguments,new et(g)},$=v;$.l=F,$.i=I,$.w=function(C,_){return y(C,{locale:_.$L,utc:_.$u,x:_.$x,$offset:_.$offset})};var et=function(){function C(g){this.$L=F(g.locale,null,!0),this.parse(g)}var _=C.prototype;return _.parse=function(g){this.$d=function(w){var A=w.date,N=w.utc;if(A===null)return new Date(NaN);if($.u(A))return new Date;if(A instanceof Date)return new Date(A);if(typeof A=="string"&&!/Z$/i.test(A)){var P=A.match(x);if(P){var j=P[2]-1||0,G=(P[7]||"0").substring(0,3);return N?new Date(Date.UTC(P[1],j,P[3]||1,P[4]||0,P[5]||0,P[6]||0,G)):new Date(P[1],j,P[3]||1,P[4]||0,P[5]||0,P[6]||0,G)}}return new Date(A)}(g),this.$x=g.x||{},this.init()},_.init=function(){var g=this.$d;this.$y=g.getFullYear(),this.$M=g.getMonth(),this.$D=g.getDate(),this.$W=g.getDay(),this.$H=g.getHours(),this.$m=g.getMinutes(),this.$s=g.getSeconds(),this.$ms=g.getMilliseconds()},_.$utils=function(){return $},_.isValid=function(){return this.$d.toString()!==p},_.isSame=function(g,w){var A=y(g);return this.startOf(w)<=A&&A<=this.endOf(w)},_.isAfter=function(g,w){return y(g){"use strict";Object.defineProperty(wn,"__esModule",{value:!0});wn.sanitizeUrl=void 0;var zg=/^([^\w]*)(javascript|data|vbscript)/im,qg=/&#(\w+)(^\w|;)?/g,Wg=/&(newline|tab);/gi,Ug=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,Hg=/^.+(:|:)/gim,Yg=[".","/"];function jg(t){return Yg.indexOf(t[0])>-1}function Gg(t){return t.replace(qg,function(e,r){return String.fromCharCode(r)})}function Vg(t){var e=Gg(t||"").replace(Wg,"").replace(Ug,"").trim();if(!e)return"about:blank";if(jg(e))return e;var r=e.match(Hg);if(!r)return e;var i=r[0];return zg.test(i)?"about:blank":e}wn.sanitizeUrl=Vg});var jf=Pa((cl,ul)=>{(function(t,e){typeof cl=="object"&&typeof ul<"u"?ul.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self,t.DOMPurify=e())})(cl,function(){"use strict";let{entries:t,setPrototypeOf:e,isFrozen:r,getPrototypeOf:i,getOwnPropertyDescriptor:n}=Object,{freeze:o,seal:a,create:s}=Object,{apply:l,construct:c}=typeof Reflect<"u"&&Reflect;l||(l=function(R,Q,J){return R.apply(Q,J)}),o||(o=function(R){return R}),a||(a=function(R){return R}),c||(c=function(R,Q){return new R(...Q)});let u=I(Array.prototype.forEach),h=I(Array.prototype.pop),f=I(Array.prototype.push),p=I(String.prototype.toLowerCase),x=I(String.prototype.toString),b=I(String.prototype.match),T=I(String.prototype.replace),B=I(String.prototype.indexOf),v=I(String.prototype.trim),M=I(RegExp.prototype.test),E=F(TypeError);function I(X){return function(R){for(var Q=arguments.length,J=new Array(Q>1?Q-1:0),bt=1;bt/gm),Ft=a(/\${[\w\W]*}/gm),Gt=a(/^data-[\-\w.\u00B7-\uFFFF]/),gt=a(/^aria-[\-\w]+$/),Rt=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ht=a(/^(?:\w+script|data):/i),It=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),O=a(/^html$/i);var V=Object.freeze({__proto__:null,MUSTACHE_EXPR:at,ERB_EXPR:Bt,TMPLIT_EXPR:Ft,DATA_ATTR:Gt,ARIA_ATTR:gt,IS_ALLOWED_URI:Rt,IS_SCRIPT_OR_DATA:ht,ATTR_WHITESPACE:It,DOCTYPE_NAME:O});let K=()=>typeof window>"u"?null:window,S=function(R,Q){if(typeof R!="object"||typeof R.createPolicy!="function")return null;let J=null,bt="data-tt-policy-suffix";Q&&Q.hasAttribute(bt)&&(J=Q.getAttribute(bt));let te="dompurify"+(J?"#"+J:"");try{return R.createPolicy(te,{createHTML(le){return le},createScriptURL(le){return le}})}catch{return console.warn("TrustedTypes policy "+te+" could not be created."),null}};function At(){let X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:K(),R=W=>At(W);if(R.version="3.0.5",R.removed=[],!X||!X.document||X.document.nodeType!==9)return R.isSupported=!1,R;let Q=X.document,J=Q.currentScript,{document:bt}=X,{DocumentFragment:te,HTMLTemplateElement:le,Node:_a,Element:Vl,NodeFilter:ba,NamedNodeMap:yg=X.NamedNodeMap||X.MozNamedAttrMap,HTMLFormElement:_g,DOMParser:bg,trustedTypes:yn}=X,_n=Vl.prototype,Cg=et(_n,"cloneNode"),Tg=et(_n,"nextSibling"),vg=et(_n,"childNodes"),Ca=et(_n,"parentNode");if(typeof le=="function"){let W=bt.createElement("template");W.content&&W.content.ownerDocument&&(bt=W.content.ownerDocument)}let Pt,Si="",{implementation:Ta,createNodeIterator:Sg,createDocumentFragment:kg,getElementsByTagName:wg}=bt,{importNode:Bg}=Q,ce={};R.isSupported=typeof t=="function"&&typeof Ca=="function"&&Ta&&Ta.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:va,ERB_EXPR:Sa,TMPLIT_EXPR:ka,DATA_ATTR:Fg,ARIA_ATTR:Ag,IS_SCRIPT_OR_DATA:Mg,ATTR_WHITESPACE:Xl}=V,{IS_ALLOWED_URI:Kl}=V,Ct=null,Zl=y({},[...rt,...C,..._,...w,...N]),Tt=null,Ql=y({},[...P,...j,...G,...Z]),ft=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ki=null,wa=null,Jl=!0,Ba=!0,tc=!1,ec=!0,Or=!1,er=!1,Fa=!1,Aa=!1,Ir=!1,bn=!1,Cn=!1,rc=!0,ic=!1,Lg="user-content-",Ma=!0,wi=!1,Dr={},Nr=null,nc=y({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),oc=null,ac=y({},["audio","video","img","source","image","track"]),La=null,sc=y({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Tn="http://www.w3.org/1998/Math/MathML",vn="http://www.w3.org/2000/svg",_e="http://www.w3.org/1999/xhtml",Rr=_e,Ea=!1,Oa=null,Eg=y({},[Tn,vn,_e],x),rr,Og=["application/xhtml+xml","text/html"],Ig="text/html",vt,Pr=null,Dg=bt.createElement("form"),lc=function(d){return d instanceof RegExp||d instanceof Function},Ia=function(d){if(!(Pr&&Pr===d)){if((!d||typeof d!="object")&&(d={}),d=$(d),rr=Og.indexOf(d.PARSER_MEDIA_TYPE)===-1?rr=Ig:rr=d.PARSER_MEDIA_TYPE,vt=rr==="application/xhtml+xml"?x:p,Ct="ALLOWED_TAGS"in d?y({},d.ALLOWED_TAGS,vt):Zl,Tt="ALLOWED_ATTR"in d?y({},d.ALLOWED_ATTR,vt):Ql,Oa="ALLOWED_NAMESPACES"in d?y({},d.ALLOWED_NAMESPACES,x):Eg,La="ADD_URI_SAFE_ATTR"in d?y($(sc),d.ADD_URI_SAFE_ATTR,vt):sc,oc="ADD_DATA_URI_TAGS"in d?y($(ac),d.ADD_DATA_URI_TAGS,vt):ac,Nr="FORBID_CONTENTS"in d?y({},d.FORBID_CONTENTS,vt):nc,ki="FORBID_TAGS"in d?y({},d.FORBID_TAGS,vt):{},wa="FORBID_ATTR"in d?y({},d.FORBID_ATTR,vt):{},Dr="USE_PROFILES"in d?d.USE_PROFILES:!1,Jl=d.ALLOW_ARIA_ATTR!==!1,Ba=d.ALLOW_DATA_ATTR!==!1,tc=d.ALLOW_UNKNOWN_PROTOCOLS||!1,ec=d.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Or=d.SAFE_FOR_TEMPLATES||!1,er=d.WHOLE_DOCUMENT||!1,Ir=d.RETURN_DOM||!1,bn=d.RETURN_DOM_FRAGMENT||!1,Cn=d.RETURN_TRUSTED_TYPE||!1,Aa=d.FORCE_BODY||!1,rc=d.SANITIZE_DOM!==!1,ic=d.SANITIZE_NAMED_PROPS||!1,Ma=d.KEEP_CONTENT!==!1,wi=d.IN_PLACE||!1,Kl=d.ALLOWED_URI_REGEXP||Rt,Rr=d.NAMESPACE||_e,ft=d.CUSTOM_ELEMENT_HANDLING||{},d.CUSTOM_ELEMENT_HANDLING&&lc(d.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(ft.tagNameCheck=d.CUSTOM_ELEMENT_HANDLING.tagNameCheck),d.CUSTOM_ELEMENT_HANDLING&&lc(d.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(ft.attributeNameCheck=d.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),d.CUSTOM_ELEMENT_HANDLING&&typeof d.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(ft.allowCustomizedBuiltInElements=d.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Or&&(Ba=!1),bn&&(Ir=!0),Dr&&(Ct=y({},[...N]),Tt=[],Dr.html===!0&&(y(Ct,rt),y(Tt,P)),Dr.svg===!0&&(y(Ct,C),y(Tt,j),y(Tt,Z)),Dr.svgFilters===!0&&(y(Ct,_),y(Tt,j),y(Tt,Z)),Dr.mathMl===!0&&(y(Ct,w),y(Tt,G),y(Tt,Z))),d.ADD_TAGS&&(Ct===Zl&&(Ct=$(Ct)),y(Ct,d.ADD_TAGS,vt)),d.ADD_ATTR&&(Tt===Ql&&(Tt=$(Tt)),y(Tt,d.ADD_ATTR,vt)),d.ADD_URI_SAFE_ATTR&&y(La,d.ADD_URI_SAFE_ATTR,vt),d.FORBID_CONTENTS&&(Nr===nc&&(Nr=$(Nr)),y(Nr,d.FORBID_CONTENTS,vt)),Ma&&(Ct["#text"]=!0),er&&y(Ct,["html","head","body"]),Ct.table&&(y(Ct,["tbody"]),delete ki.tbody),d.TRUSTED_TYPES_POLICY){if(typeof d.TRUSTED_TYPES_POLICY.createHTML!="function")throw E('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof d.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw E('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');Pt=d.TRUSTED_TYPES_POLICY,Si=Pt.createHTML("")}else Pt===void 0&&(Pt=S(yn,J)),Pt!==null&&typeof Si=="string"&&(Si=Pt.createHTML(""));o&&o(d),Pr=d}},cc=y({},["mi","mo","mn","ms","mtext"]),uc=y({},["foreignobject","desc","title","annotation-xml"]),Ng=y({},["title","style","font","a","script"]),Sn=y({},C);y(Sn,_),y(Sn,g);let Da=y({},w);y(Da,A);let Rg=function(d){let k=Ca(d);(!k||!k.tagName)&&(k={namespaceURI:Rr,tagName:"template"});let D=p(d.tagName),nt=p(k.tagName);return Oa[d.namespaceURI]?d.namespaceURI===vn?k.namespaceURI===_e?D==="svg":k.namespaceURI===Tn?D==="svg"&&(nt==="annotation-xml"||cc[nt]):!!Sn[D]:d.namespaceURI===Tn?k.namespaceURI===_e?D==="math":k.namespaceURI===vn?D==="math"&&uc[nt]:!!Da[D]:d.namespaceURI===_e?k.namespaceURI===vn&&!uc[nt]||k.namespaceURI===Tn&&!cc[nt]?!1:!Da[D]&&(Ng[D]||!Sn[D]):!!(rr==="application/xhtml+xml"&&Oa[d.namespaceURI]):!1},ir=function(d){f(R.removed,{element:d});try{d.parentNode.removeChild(d)}catch{d.remove()}},Na=function(d,k){try{f(R.removed,{attribute:k.getAttributeNode(d),from:k})}catch{f(R.removed,{attribute:null,from:k})}if(k.removeAttribute(d),d==="is"&&!Tt[d])if(Ir||bn)try{ir(k)}catch{}else try{k.setAttribute(d,"")}catch{}},hc=function(d){let k,D;if(Aa)d=""+d;else{let Xt=b(d,/^[\r\n\t ]+/);D=Xt&&Xt[0]}rr==="application/xhtml+xml"&&Rr===_e&&(d=''+d+"");let nt=Pt?Pt.createHTML(d):d;if(Rr===_e)try{k=new bg().parseFromString(nt,rr)}catch{}if(!k||!k.documentElement){k=Ta.createDocument(Rr,"template",null);try{k.documentElement.innerHTML=Ea?Si:nt}catch{}}let St=k.body||k.documentElement;return d&&D&&St.insertBefore(bt.createTextNode(D),St.childNodes[0]||null),Rr===_e?wg.call(k,er?"html":"body")[0]:er?k.documentElement:St},fc=function(d){return Sg.call(d.ownerDocument||d,d,ba.SHOW_ELEMENT|ba.SHOW_COMMENT|ba.SHOW_TEXT,null,!1)},Pg=function(d){return d instanceof _g&&(typeof d.nodeName!="string"||typeof d.textContent!="string"||typeof d.removeChild!="function"||!(d.attributes instanceof yg)||typeof d.removeAttribute!="function"||typeof d.setAttribute!="function"||typeof d.namespaceURI!="string"||typeof d.insertBefore!="function"||typeof d.hasChildNodes!="function")},kn=function(d){return typeof _a=="object"?d instanceof _a:d&&typeof d=="object"&&typeof d.nodeType=="number"&&typeof d.nodeName=="string"},be=function(d,k,D){ce[d]&&u(ce[d],nt=>{nt.call(R,k,D,Pr)})},pc=function(d){let k;if(be("beforeSanitizeElements",d,null),Pg(d))return ir(d),!0;let D=vt(d.nodeName);if(be("uponSanitizeElement",d,{tagName:D,allowedTags:Ct}),d.hasChildNodes()&&!kn(d.firstElementChild)&&(!kn(d.content)||!kn(d.content.firstElementChild))&&M(/<[/\w]/g,d.innerHTML)&&M(/<[/\w]/g,d.textContent))return ir(d),!0;if(!Ct[D]||ki[D]){if(!ki[D]&&mc(D)&&(ft.tagNameCheck instanceof RegExp&&M(ft.tagNameCheck,D)||ft.tagNameCheck instanceof Function&&ft.tagNameCheck(D)))return!1;if(Ma&&!Nr[D]){let nt=Ca(d)||d.parentNode,St=vg(d)||d.childNodes;if(St&&nt){let Xt=St.length;for(let ut=Xt-1;ut>=0;--ut)nt.insertBefore(Cg(St[ut],!0),Tg(d))}}return ir(d),!0}return d instanceof Vl&&!Rg(d)||(D==="noscript"||D==="noembed"||D==="noframes")&&M(/<\/no(script|embed|frames)/i,d.innerHTML)?(ir(d),!0):(Or&&d.nodeType===3&&(k=d.textContent,k=T(k,va," "),k=T(k,Sa," "),k=T(k,ka," "),d.textContent!==k&&(f(R.removed,{element:d.cloneNode()}),d.textContent=k)),be("afterSanitizeElements",d,null),!1)},dc=function(d,k,D){if(rc&&(k==="id"||k==="name")&&(D in bt||D in Dg))return!1;if(!(Ba&&!wa[k]&&M(Fg,k))){if(!(Jl&&M(Ag,k))){if(!Tt[k]||wa[k]){if(!(mc(d)&&(ft.tagNameCheck instanceof RegExp&&M(ft.tagNameCheck,d)||ft.tagNameCheck instanceof Function&&ft.tagNameCheck(d))&&(ft.attributeNameCheck instanceof RegExp&&M(ft.attributeNameCheck,k)||ft.attributeNameCheck instanceof Function&&ft.attributeNameCheck(k))||k==="is"&&ft.allowCustomizedBuiltInElements&&(ft.tagNameCheck instanceof RegExp&&M(ft.tagNameCheck,D)||ft.tagNameCheck instanceof Function&&ft.tagNameCheck(D))))return!1}else if(!La[k]){if(!M(Kl,T(D,Xl,""))){if(!((k==="src"||k==="xlink:href"||k==="href")&&d!=="script"&&B(D,"data:")===0&&oc[d])){if(!(tc&&!M(Mg,T(D,Xl,"")))){if(D)return!1}}}}}}return!0},mc=function(d){return d.indexOf("-")>0},gc=function(d){let k,D,nt,St;be("beforeSanitizeAttributes",d,null);let{attributes:Xt}=d;if(!Xt)return;let ut={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Tt};for(St=Xt.length;St--;){k=Xt[St];let{name:ue,namespaceURI:Ra}=k;if(D=ue==="value"?k.value:v(k.value),nt=vt(ue),ut.attrName=nt,ut.attrValue=D,ut.keepAttr=!0,ut.forceKeepAttr=void 0,be("uponSanitizeAttribute",d,ut),D=ut.attrValue,ut.forceKeepAttr||(Na(ue,d),!ut.keepAttr))continue;if(!ec&&M(/\/>/i,D)){Na(ue,d);continue}Or&&(D=T(D,va," "),D=T(D,Sa," "),D=T(D,ka," "));let xc=vt(d.nodeName);if(dc(xc,nt,D)){if(ic&&(nt==="id"||nt==="name")&&(Na(ue,d),D=Lg+D),Pt&&typeof yn=="object"&&typeof yn.getAttributeType=="function"&&!Ra)switch(yn.getAttributeType(xc,nt)){case"TrustedHTML":{D=Pt.createHTML(D);break}case"TrustedScriptURL":{D=Pt.createScriptURL(D);break}}try{Ra?d.setAttributeNS(Ra,ue,D):d.setAttribute(ue,D),h(R.removed)}catch{}}}be("afterSanitizeAttributes",d,null)},$g=function W(d){let k,D=fc(d);for(be("beforeSanitizeShadowDOM",d,null);k=D.nextNode();)be("uponSanitizeShadowNode",k,null),!pc(k)&&(k.content instanceof te&&W(k.content),gc(k));be("afterSanitizeShadowDOM",d,null)};return R.sanitize=function(W){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},k,D,nt,St;if(Ea=!W,Ea&&(W=""),typeof W!="string"&&!kn(W))if(typeof W.toString=="function"){if(W=W.toString(),typeof W!="string")throw E("dirty is not a string, aborting")}else throw E("toString is not a function");if(!R.isSupported)return W;if(Fa||Ia(d),R.removed=[],typeof W=="string"&&(wi=!1),wi){if(W.nodeName){let ue=vt(W.nodeName);if(!Ct[ue]||ki[ue])throw E("root node is forbidden and cannot be sanitized in-place")}}else if(W instanceof _a)k=hc(""),D=k.ownerDocument.importNode(W,!0),D.nodeType===1&&D.nodeName==="BODY"||D.nodeName==="HTML"?k=D:k.appendChild(D);else{if(!Ir&&!Or&&!er&&W.indexOf("<")===-1)return Pt&&Cn?Pt.createHTML(W):W;if(k=hc(W),!k)return Ir?null:Cn?Si:""}k&&Aa&&ir(k.firstChild);let Xt=fc(wi?W:k);for(;nt=Xt.nextNode();)pc(nt)||(nt.content instanceof te&&$g(nt.content),gc(nt));if(wi)return W;if(Ir){if(bn)for(St=kg.call(k.ownerDocument);k.firstChild;)St.appendChild(k.firstChild);else St=k;return(Tt.shadowroot||Tt.shadowrootmode)&&(St=Bg.call(Q,St,!0)),St}let ut=er?k.outerHTML:k.innerHTML;return er&&Ct["!doctype"]&&k.ownerDocument&&k.ownerDocument.doctype&&k.ownerDocument.doctype.name&&M(O,k.ownerDocument.doctype.name)&&(ut=" +`+ut),Or&&(ut=T(ut,va," "),ut=T(ut,Sa," "),ut=T(ut,ka," ")),Pt&&Cn?Pt.createHTML(ut):ut},R.setConfig=function(W){Ia(W),Fa=!0},R.clearConfig=function(){Pr=null,Fa=!1},R.isValidAttribute=function(W,d,k){Pr||Ia({});let D=vt(W),nt=vt(d);return dc(D,nt,k)},R.addHook=function(W,d){typeof d=="function"&&(ce[W]=ce[W]||[],f(ce[W],d))},R.removeHook=function(W){if(ce[W])return h(ce[W])},R.removeHooks=function(W){ce[W]&&(ce[W]=[])},R.removeAllHooks=function(){ce={}},R}var it=At();return it})});function yc(t){for(var e=[],r=1;r=i)&&(r=i);else{let i=-1;for(let n of t)(n=e(n,++i,t))!=null&&(r=n)&&(r=n)}return r}function Tc(t,e){let r;if(e===void 0)for(let i of t)i!=null&&(r>i||r===void 0&&i>=i)&&(r=i);else{let i=-1;for(let n of t)(n=e(n,++i,t))!=null&&(r>n||r===void 0&&n>=n)&&(r=n)}return r}function nr(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}function Wa(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}function or(t){let e,r,i;t.length!==2?(e=nr,r=(s,l)=>nr(t(s),l),i=(s,l)=>t(s)-l):(e=t===nr||t===Wa?t:Xg,r=t,i=t);function n(s,l,c=0,u=s.length){if(c>>1;r(s[h],l)<0?c=h+1:u=h}while(c>>1;r(s[h],l)<=0?c=h+1:u=h}while(cc&&i(s[h-1],l)>-i(s[h],l)?h-1:h}return{left:n,center:a,right:o}}function Xg(){return 0}function Ua(t){return t===null?NaN:+t}var vc=or(nr),Sc=vc.right,Kg=vc.left,Zg=or(Ua).center,Ha=Sc;var $r=class extends Map{constructor(e,r=t0){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(let[i,n]of e)this.set(i,n)}get(e){return super.get(kc(this,e))}has(e){return super.has(kc(this,e))}set(e,r){return super.set(Qg(this,e),r)}delete(e){return super.delete(Jg(this,e))}};function kc({_intern:t,_key:e},r){let i=e(r);return t.has(i)?t.get(i):r}function Qg({_intern:t,_key:e},r){let i=e(r);return t.has(i)?t.get(i):(t.set(i,r),r)}function Jg({_intern:t,_key:e},r){let i=e(r);return t.has(i)&&(r=t.get(i),t.delete(i)),r}function t0(t){return t!==null&&typeof t=="object"?t.valueOf():t}var e0=Math.sqrt(50),r0=Math.sqrt(10),i0=Math.sqrt(2);function Bn(t,e,r){let i=(e-t)/Math.max(0,r),n=Math.floor(Math.log10(i)),o=i/Math.pow(10,n),a=o>=e0?10:o>=r0?5:o>=i0?2:1,s,l,c;return n<0?(c=Math.pow(10,-n)/a,s=Math.round(t*c),l=Math.round(e*c),s/ce&&--l,c=-c):(c=Math.pow(10,n)*a,s=Math.round(t/c),l=Math.round(e/c),s*ce&&--l),l0))return[];if(t===e)return[t];let i=e=n))return[];let s=o-n+1,l=new Array(s);if(i)if(a<0)for(let c=0;c+t(e)}function s0(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function l0(){return!this.__axis}function Fc(t,e){var r=[],i=null,n=null,o=6,a=6,s=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,c=t===Mn||t===An?-1:1,u=t===An||t===Ya?"x":"y",h=t===Mn||t===ja?n0:o0;function f(p){var x=i??(e.ticks?e.ticks.apply(e,r):e.domain()),b=n??(e.tickFormat?e.tickFormat.apply(e,r):wc),T=Math.max(o,0)+s,B=e.range(),v=+B[0]+l,M=+B[B.length-1]+l,E=(e.bandwidth?s0:a0)(e.copy(),l),I=p.selection?p.selection():p,F=I.selectAll(".domain").data([null]),y=I.selectAll(".tick").data(x,e).order(),$=y.exit(),et=y.enter().append("g").attr("class","tick"),rt=y.select("line"),C=y.select("text");F=F.merge(F.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),y=y.merge(et),rt=rt.merge(et.append("line").attr("stroke","currentColor").attr(u+"2",c*o)),C=C.merge(et.append("text").attr("fill","currentColor").attr(u,c*T).attr("dy",t===Mn?"0em":t===ja?"0.71em":"0.32em")),p!==I&&(F=F.transition(p),y=y.transition(p),rt=rt.transition(p),C=C.transition(p),$=$.transition(p).attr("opacity",Bc).attr("transform",function(_){return isFinite(_=E(_))?h(_+l):this.getAttribute("transform")}),et.attr("opacity",Bc).attr("transform",function(_){var g=this.parentNode.__axis;return h((g&&isFinite(g=g(_))?g:E(_))+l)})),$.remove(),F.attr("d",t===An||t===Ya?a?"M"+c*a+","+v+"H"+l+"V"+M+"H"+c*a:"M"+l+","+v+"V"+M:a?"M"+v+","+c*a+"V"+l+"H"+M+"V"+c*a:"M"+v+","+l+"H"+M),y.attr("opacity",1).attr("transform",function(_){return h(E(_)+l)}),rt.attr(u+"2",c*o),C.attr(u,c*T).text(b),I.filter(l0).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===Ya?"start":t===An?"end":"middle"),I.each(function(){this.__axis=E})}return f.scale=function(p){return arguments.length?(e=p,f):e},f.ticks=function(){return r=Array.from(arguments),f},f.tickArguments=function(p){return arguments.length?(r=p==null?[]:Array.from(p),f):r.slice()},f.tickValues=function(p){return arguments.length?(i=p==null?null:Array.from(p),f):i&&i.slice()},f.tickFormat=function(p){return arguments.length?(n=p,f):n},f.tickSize=function(p){return arguments.length?(o=a=+p,f):o},f.tickSizeInner=function(p){return arguments.length?(o=+p,f):o},f.tickSizeOuter=function(p){return arguments.length?(a=+p,f):a},f.tickPadding=function(p){return arguments.length?(s=+p,f):s},f.offset=function(p){return arguments.length?(l=+p,f):l},f}function c0(t){return Fc(Mn,t)}function u0(t){return Fc(ja,t)}function h0(){}function ar(t){return t==null?h0:function(){return this.querySelector(t)}}function Ac(t){typeof t!="function"&&(t=ar(t));for(var e=this._groups,r=e.length,i=new Array(r),n=0;n=M&&(M=v+1);!(I=T[M])&&++M=0;)(a=i[n])&&(o&&a.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(a,o),o=a);return this}function qc(t){t||(t=S0);function e(h,f){return h&&f?t(h.__data__,f.__data__):!h-!f}for(var r=this._groups,i=r.length,n=new Array(i),o=0;oe?1:t>=e?0:NaN}function Wc(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Uc(){return Array.from(this)}function Hc(){for(var t=this._groups,e=0,r=t.length;e=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),Ga.hasOwnProperty(e)?{space:Ga[e],local:t}:t}function k0(t){return function(){this.removeAttribute(t)}}function w0(t){return function(){this.removeAttributeNS(t.space,t.local)}}function B0(t,e){return function(){this.setAttribute(t,e)}}function F0(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function A0(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function M0(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function Vc(t,e){var r=Ce(t);if(arguments.length<2){var i=this.node();return r.local?i.getAttributeNS(r.space,r.local):i.getAttribute(r)}return this.each((e==null?r.local?w0:k0:typeof e=="function"?r.local?M0:A0:r.local?F0:B0)(r,e))}function In(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function L0(t){return function(){this.style.removeProperty(t)}}function E0(t,e,r){return function(){this.style.setProperty(t,e,r)}}function O0(t,e,r){return function(){var i=e.apply(this,arguments);i==null?this.style.removeProperty(t):this.style.setProperty(t,i,r)}}function Xc(t,e,r){return arguments.length>1?this.each((e==null?L0:typeof e=="function"?O0:E0)(t,e,r??"")):Ie(this.node(),t)}function Ie(t,e){return t.style.getPropertyValue(e)||In(t).getComputedStyle(t,null).getPropertyValue(e)}function I0(t){return function(){delete this[t]}}function D0(t,e){return function(){this[t]=e}}function N0(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function Kc(t,e){return arguments.length>1?this.each((e==null?I0:typeof e=="function"?N0:D0)(t,e)):this.node()[t]}function Zc(t){return t.trim().split(/^|\s+/)}function Va(t){return t.classList||new Qc(t)}function Qc(t){this._node=t,this._names=Zc(t.getAttribute("class")||"")}Qc.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Jc(t,e){for(var r=Va(t),i=-1,n=e.length;++i=0&&(r=e.slice(i+1),e=e.slice(0,i)),{type:e,name:r}})}function rx(t){return function(){var e=this.__on;if(e){for(var r=0,i=-1,n=e.length,o;r>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?Nn(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?Nn(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=cx.exec(t))?new Mt(e[1],e[2],e[3],1):(e=ux.exec(t))?new Mt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=hx.exec(t))?Nn(e[1],e[2],e[3],e[4]):(e=fx.exec(t))?Nn(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=px.exec(t))?Tu(e[1],e[2]/100,e[3]/100,1):(e=dx.exec(t))?Tu(e[1],e[2]/100,e[3]/100,e[4]):gu.hasOwnProperty(t)?_u(gu[t]):t==="transparent"?new Mt(NaN,NaN,NaN,0):null}function _u(t){return new Mt(t>>16&255,t>>8&255,t&255,1)}function Nn(t,e,r,i){return i<=0&&(t=e=r=NaN),new Mt(t,e,r,i)}function Ka(t){return t instanceof De||(t=re(t)),t?(t=t.rgb(),new Mt(t.r,t.g,t.b,t.opacity)):new Mt}function Ur(t,e,r,i){return arguments.length===1?Ka(t):new Mt(t,e,r,i??1)}function Mt(t,e,r,i){this.r=+t,this.g=+e,this.b=+r,this.opacity=+i}sr(Mt,Ur,qr(De,{brighter(t){return t=t==null?Pn:Math.pow(Pn,t),new Mt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Oi:Math.pow(Oi,t),new Mt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Mt(cr(this.r),cr(this.g),cr(this.b),$n(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:bu,formatHex:bu,formatHex8:xx,formatRgb:Cu,toString:Cu}));function bu(){return`#${lr(this.r)}${lr(this.g)}${lr(this.b)}`}function xx(){return`#${lr(this.r)}${lr(this.g)}${lr(this.b)}${lr((isNaN(this.opacity)?1:this.opacity)*255)}`}function Cu(){let t=$n(this.opacity);return`${t===1?"rgb(":"rgba("}${cr(this.r)}, ${cr(this.g)}, ${cr(this.b)}${t===1?")":`, ${t})`}`}function $n(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function cr(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function lr(t){return t=cr(t),(t<16?"0":"")+t.toString(16)}function Tu(t,e,r,i){return i<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new ee(t,e,r,i)}function Su(t){if(t instanceof ee)return new ee(t.h,t.s,t.l,t.opacity);if(t instanceof De||(t=re(t)),!t)return new ee;if(t instanceof ee)return t;t=t.rgb();var e=t.r/255,r=t.g/255,i=t.b/255,n=Math.min(e,r,i),o=Math.max(e,r,i),a=NaN,s=o-n,l=(o+n)/2;return s?(e===o?a=(r-i)/s+(r0&&l<1?0:a,new ee(a,s,l,t.opacity)}function ku(t,e,r,i){return arguments.length===1?Su(t):new ee(t,e,r,i??1)}function ee(t,e,r,i){this.h=+t,this.s=+e,this.l=+r,this.opacity=+i}sr(ee,ku,qr(De,{brighter(t){return t=t==null?Pn:Math.pow(Pn,t),new ee(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Oi:Math.pow(Oi,t),new ee(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,i=r+(r<.5?r:1-r)*e,n=2*r-i;return new Mt(Xa(t>=240?t-240:t+120,n,i),Xa(t,n,i),Xa(t<120?t+240:t-120,n,i),this.opacity)},clamp(){return new ee(vu(this.h),Rn(this.s),Rn(this.l),$n(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=$n(this.opacity);return`${t===1?"hsl(":"hsla("}${vu(this.h)}, ${Rn(this.s)*100}%, ${Rn(this.l)*100}%${t===1?")":`, ${t})`}`}}));function vu(t){return t=(t||0)%360,t<0?t+360:t}function Rn(t){return Math.max(0,Math.min(1,t||0))}function Xa(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}var wu=Math.PI/180,Bu=180/Math.PI;var zn=18,Fu=.96422,Au=1,Mu=.82521,Lu=4/29,Hr=6/29,Eu=3*Hr*Hr,yx=Hr*Hr*Hr;function Ou(t){if(t instanceof fe)return new fe(t.l,t.a,t.b,t.opacity);if(t instanceof ve)return Iu(t);t instanceof Mt||(t=Ka(t));var e=ts(t.r),r=ts(t.g),i=ts(t.b),n=Za((.2225045*e+.7168786*r+.0606169*i)/Au),o,a;return e===r&&r===i?o=a=n:(o=Za((.4360747*e+.3850649*r+.1430804*i)/Fu),a=Za((.0139322*e+.0971045*r+.7141733*i)/Mu)),new fe(116*n-16,500*(o-n),200*(n-a),t.opacity)}function es(t,e,r,i){return arguments.length===1?Ou(t):new fe(t,e,r,i??1)}function fe(t,e,r,i){this.l=+t,this.a=+e,this.b=+r,this.opacity=+i}sr(fe,es,qr(De,{brighter(t){return new fe(this.l+zn*(t??1),this.a,this.b,this.opacity)},darker(t){return new fe(this.l-zn*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return e=Fu*Qa(e),t=Au*Qa(t),r=Mu*Qa(r),new Mt(Ja(3.1338561*e-1.6168667*t-.4906146*r),Ja(-.9787684*e+1.9161415*t+.033454*r),Ja(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}}));function Za(t){return t>yx?Math.pow(t,1/3):t/Eu+Lu}function Qa(t){return t>Hr?t*t*t:Eu*(t-Lu)}function Ja(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ts(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function _x(t){if(t instanceof ve)return new ve(t.h,t.c,t.l,t.opacity);if(t instanceof fe||(t=Ou(t)),t.a===0&&t.b===0)return new ve(NaN,0()=>t;function Du(t,e){return function(r){return t+r*e}}function bx(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(i){return Math.pow(t+i*e,r)}}function Nu(t,e){var r=e-t;return r?Du(t,r>180||r<-180?r-360*Math.round(r/360):r):Yr(isNaN(t)?e:t)}function Ru(t){return(t=+t)==1?Se:function(e,r){return r-e?bx(e,r,t):Yr(isNaN(e)?r:e)}}function Se(t,e){var r=e-t;return r?Du(t,r):Yr(isNaN(t)?e:t)}function Pu(t){return function(e,r){var i=t((e=Di(e)).h,(r=Di(r)).h),n=Se(e.c,r.c),o=Se(e.l,r.l),a=Se(e.opacity,r.opacity);return function(s){return e.h=i(s),e.c=n(s),e.l=o(s),e.opacity=a(s),e+""}}}var Cx=Pu(Nu),Tx=Pu(Se);function rs(t,e,r,i,n){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*r+(1+3*t+3*o-3*a)*i+a*n)/6}function $u(t){var e=t.length-1;return function(r){var i=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),n=t[i],o=t[i+1],a=i>0?t[i-1]:2*n-o,s=ir&&(o=e.slice(r,o),s[a]?s[a]+=o:s[++a]=o),(i=i[0])===(n=n[0])?s[a]?s[a]+=n:s[++a]=n:(s[++a]=null,l.push({i:a,x:Lt(i,n)})),r=is.lastIndex;return r180?u+=360:u-c>180&&(c+=360),f.push({i:h.push(n(h)+"rotate(",null,i)-2,x:Lt(c,u)})):u&&h.push(n(h)+"rotate("+u+i)}function s(c,u,h,f){c!==u?f.push({i:h.push(n(h)+"skewX(",null,i)-2,x:Lt(c,u)}):u&&h.push(n(h)+"skewX("+u+i)}function l(c,u,h,f,p,x){if(c!==h||u!==f){var b=p.push(n(p)+"scale(",null,",",null,")");x.push({i:b-4,x:Lt(c,h)},{i:b-2,x:Lt(u,f)})}else(h!==1||f!==1)&&p.push(n(p)+"scale("+h+","+f+")")}return function(c,u){var h=[],f=[];return c=t(c),u=t(u),o(c.translateX,c.translateY,u.translateX,u.translateY,h,f),a(c.rotate,u.rotate,h,f),s(c.skewX,u.skewX,h,f),l(c.scaleX,c.scaleY,u.scaleX,u.scaleY,h,f),c=u=null,function(p){for(var x=-1,b=f.length,T;++xe&&(r=t,t=e,e=r),function(i){return Math.max(t,Math.min(e,i))}}function Fx(t,e,r){var i=t[0],n=t[1],o=e[0],a=e[1];return n2?Ax:Fx,l=c=null,h}function h(f){return f==null||isNaN(f=+f)?o:(l||(l=s(t.map(i),e,r)))(i(a(f)))}return h.invert=function(f){return a(n((c||(c=s(e,t.map(i),Lt)))(f)))},h.domain=function(f){return arguments.length?(t=Array.from(f,fs),u()):t.slice()},h.range=function(f){return arguments.length?(e=Array.from(f),u()):e.slice()},h.rangeRound=function(f){return e=Array.from(f),r=os,u()},h.clamp=function(f){return arguments.length?(a=f?!0:Gr,u()):a!==Gr},h.interpolate=function(f){return arguments.length?(r=f,u()):r},h.unknown=function(f){return arguments.length?(o=f,h):o},function(f,p){return i=f,n=p,u()}}function Ri(){return Mx()(Gr,Gr)}function Qu(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function fr(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,i=t.slice(0,r);return[i.length>1?i[0]+i.slice(2):i,+t.slice(r+1)]}function pe(t){return t=fr(Math.abs(t)),t?t[1]:NaN}function Ju(t,e){return function(r,i){for(var n=r.length,o=[],a=0,s=t[0],l=0;n>0&&s>0&&(l+s+1>i&&(s=Math.max(1,i-l)),o.push(r.substring(n-=s,n+s)),!((l+=s+1)>i));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}function th(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var Lx=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ne(t){if(!(e=Lx.exec(t)))throw new Error("invalid format: "+t);var e;return new Hn({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}Ne.prototype=Hn.prototype;function Hn(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Hn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function eh(t){t:for(var e=t.length,r=1,i=-1,n;r0&&(i=0);break}return i>0?t.slice(0,i)+t.slice(n+1):t}var ds;function rh(t,e){var r=fr(t,e);if(!r)return t+"";var i=r[0],n=r[1],o=n-(ds=Math.max(-8,Math.min(8,Math.floor(n/3)))*3)+1,a=i.length;return o===a?i:o>a?i+new Array(o-a+1).join("0"):o>0?i.slice(0,o)+"."+i.slice(o):"0."+new Array(1-o).join("0")+fr(t,Math.max(0,e+o-1))[0]}function ms(t,e){var r=fr(t,e);if(!r)return t+"";var i=r[0],n=r[1];return n<0?"0."+new Array(-n).join("0")+i:i.length>n+1?i.slice(0,n+1)+"."+i.slice(n+1):i+new Array(n-i.length+2).join("0")}var gs={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Qu,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>ms(t*100,e),r:ms,s:rh,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function xs(t){return t}var ih=Array.prototype.map,nh=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function oh(t){var e=t.grouping===void 0||t.thousands===void 0?xs:Ju(ih.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",i=t.currency===void 0?"":t.currency[1]+"",n=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?xs:th(ih.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"\u2212":t.minus+"",l=t.nan===void 0?"NaN":t.nan+"";function c(h){h=Ne(h);var f=h.fill,p=h.align,x=h.sign,b=h.symbol,T=h.zero,B=h.width,v=h.comma,M=h.precision,E=h.trim,I=h.type;I==="n"?(v=!0,I="g"):gs[I]||(M===void 0&&(M=12),E=!0,I="g"),(T||f==="0"&&p==="=")&&(T=!0,f="0",p="=");var F=b==="$"?r:b==="#"&&/[boxX]/.test(I)?"0"+I.toLowerCase():"",y=b==="$"?i:/[%p]/.test(I)?a:"",$=gs[I],et=/[defgprs%]/.test(I);M=M===void 0?6:/[gprs]/.test(I)?Math.max(1,Math.min(21,M)):Math.max(0,Math.min(20,M));function rt(C){var _=F,g=y,w,A,N;if(I==="c")g=$(C)+g,C="";else{C=+C;var P=C<0||1/C<0;if(C=isNaN(C)?l:$(Math.abs(C),M),E&&(C=eh(C)),P&&+C==0&&x!=="+"&&(P=!1),_=(P?x==="("?x:s:x==="-"||x==="("?"":x)+_,g=(I==="s"?nh[8+ds/3]:"")+g+(P&&x==="("?")":""),et){for(w=-1,A=C.length;++wN||N>57){g=(N===46?n+C.slice(w+1):C.slice(w))+g,C=C.slice(0,w);break}}}v&&!T&&(C=e(C,1/0));var j=_.length+C.length+g.length,G=j>1)+_+C+g+G.slice(j);break;default:C=G+_+C+g;break}return o(C)}return rt.toString=function(){return h+""},rt}function u(h,f){var p=c((h=Ne(h),h.type="f",h)),x=Math.max(-8,Math.min(8,Math.floor(pe(f)/3)))*3,b=Math.pow(10,-x),T=nh[8+x/3];return function(B){return p(b*B)+T}}return{format:c,formatPrefix:u}}var Yn,jn,Gn;ys({thousands:",",grouping:[3],currency:["$",""]});function ys(t){return Yn=oh(t),jn=Yn.format,Gn=Yn.formatPrefix,Yn}function _s(t){return Math.max(0,-pe(Math.abs(t)))}function bs(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(pe(e)/3)))*3-pe(Math.abs(t)))}function Cs(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,pe(e)-pe(t))+1}function Ts(t,e,r,i){var n=zr(t,e,r),o;switch(i=Ne(i??",f"),i.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return i.precision==null&&!isNaN(o=bs(n,a))&&(i.precision=o),Gn(i,a)}case"":case"e":case"g":case"p":case"r":{i.precision==null&&!isNaN(o=Cs(n,Math.max(Math.abs(t),Math.abs(e))))&&(i.precision=o-(i.type==="e"));break}case"f":case"%":{i.precision==null&&!isNaN(o=_s(n))&&(i.precision=o-(i.type==="%")*2);break}}return jn(i)}function Ex(t){var e=t.domain;return t.ticks=function(r){var i=e();return Fn(i[0],i[i.length-1],r??10)},t.tickFormat=function(r,i){var n=e();return Ts(n[0],n[n.length-1],r??10,i)},t.nice=function(r){r==null&&(r=10);var i=e(),n=0,o=i.length-1,a=i[n],s=i[o],l,c,u=10;for(s0;){if(c=Bi(a,s,r),c===l)return i[n]=a,i[o]=s,e(i);if(c>0)a=Math.floor(a/c)*c,s=Math.ceil(s/c)*c;else if(c<0)a=Math.ceil(a*c)/c,s=Math.floor(s*c)/c;else break;l=c}return t},t}function vs(){var t=Ri();return t.copy=function(){return Un(t,vs())},jr.apply(t,arguments),Ex(t)}var Ss=new Date,ks=new Date;function ot(t,e,r,i){function n(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return n.floor=o=>(t(o=new Date(+o)),o),n.ceil=o=>(t(o=new Date(o-1)),e(o,1),t(o),o),n.round=o=>{let a=n(o),s=n.ceil(o);return o-a(e(o=new Date(+o),a==null?1:Math.floor(a)),o),n.range=(o,a,s)=>{let l=[];if(o=n.ceil(o),s=s==null?1:Math.floor(s),!(o0))return l;let c;do l.push(c=new Date(+o)),e(o,s),t(o);while(cot(a=>{if(a>=a)for(;t(a),!o(a);)a.setTime(a-1)},(a,s)=>{if(a>=a)if(s<0)for(;++s<=0;)for(;e(a,-1),!o(a););else for(;--s>=0;)for(;e(a,1),!o(a););}),r&&(n.count=(o,a)=>(Ss.setTime(+o),ks.setTime(+a),t(Ss),t(ks),Math.floor(r(Ss,ks))),n.every=o=>(o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?n.filter(i?a=>i(a)%o===0:a=>n.count(0,a)%o===0):n)),n}var pr=ot(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);pr.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?ot(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):pr);var ah=pr.range;var de=ot(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),sh=de.range;var Vr=ot(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),Ox=Vr.range,Vn=ot(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),Ix=Vn.range;var Xr=ot(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),Dx=Xr.range,Xn=ot(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),Nx=Xn.range;var ke=ot(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),Rx=ke.range,$i=ot(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),Px=$i.range,Kn=ot(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),$x=Kn.range;function gr(t){return ot(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}var we=gr(0),Kr=gr(1),ch=gr(2),uh=gr(3),Re=gr(4),hh=gr(5),fh=gr(6),ph=we.range,zx=Kr.range,qx=ch.range,Wx=uh.range,Ux=Re.range,Hx=hh.range,Yx=fh.range;function xr(t){return ot(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/6048e5)}var yr=xr(0),Zr=xr(1),dh=xr(2),mh=xr(3),Pe=xr(4),gh=xr(5),xh=xr(6),yh=yr.range,jx=Zr.range,Gx=dh.range,Vx=mh.range,Xx=Pe.range,Kx=gh.range,Zx=xh.range;var Qr=ot(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),Qx=Qr.range,Zn=ot(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),Jx=Zn.range;var Vt=ot(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());Vt.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:ot(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});var ty=Vt.range,ie=ot(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());ie.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:ot(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});var ey=ie.range;function bh(t,e,r,i,n,o){let a=[[de,1,1e3],[de,5,5*1e3],[de,15,15*1e3],[de,30,30*1e3],[o,1,6e4],[o,5,5*6e4],[o,15,15*6e4],[o,30,30*6e4],[n,1,36e5],[n,3,3*36e5],[n,6,6*36e5],[n,12,12*36e5],[i,1,864e5],[i,2,2*864e5],[r,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function s(c,u,h){let f=uT).right(a,f);if(p===a.length)return t.every(zr(c/31536e6,u/31536e6,h));if(p===0)return pr.every(Math.max(zr(c,u,h),1));let[x,b]=a[f/a[p-1][2]53)return null;"w"in S||(S.w=1),"Z"in S?(it=As(zi(S.y,0,1)),X=it.getUTCDay(),it=X>4||X===0?Zr.ceil(it):Zr(it),it=$i.offset(it,(S.V-1)*7),S.y=it.getUTCFullYear(),S.m=it.getUTCMonth(),S.d=it.getUTCDate()+(S.w+6)%7):(it=Fs(zi(S.y,0,1)),X=it.getDay(),it=X>4||X===0?Kr.ceil(it):Kr(it),it=ke.offset(it,(S.V-1)*7),S.y=it.getFullYear(),S.m=it.getMonth(),S.d=it.getDate()+(S.w+6)%7)}else("W"in S||"U"in S)&&("w"in S||(S.w="u"in S?S.u%7:"W"in S?1:0),X="Z"in S?As(zi(S.y,0,1)).getUTCDay():Fs(zi(S.y,0,1)).getDay(),S.m=0,S.d="W"in S?(S.w+6)%7+S.W*7-(X+5)%7:S.w+S.U*7-(X+6)%7);return"Z"in S?(S.H+=S.Z/100|0,S.M+=S.Z%100,As(S)):Fs(S)}}function $(O,V,K,S){for(var At=0,it=V.length,X=K.length,R,Q;At=X)return-1;if(R=V.charCodeAt(At++),R===37){if(R=V.charAt(At++),Q=I[R in Ch?V.charAt(At++):R],!Q||(S=Q(O,K,S))<0)return-1}else if(R!=K.charCodeAt(S++))return-1}return S}function et(O,V,K){var S=c.exec(V.slice(K));return S?(O.p=u.get(S[0].toLowerCase()),K+S[0].length):-1}function rt(O,V,K){var S=p.exec(V.slice(K));return S?(O.w=x.get(S[0].toLowerCase()),K+S[0].length):-1}function C(O,V,K){var S=h.exec(V.slice(K));return S?(O.w=f.get(S[0].toLowerCase()),K+S[0].length):-1}function _(O,V,K){var S=B.exec(V.slice(K));return S?(O.m=v.get(S[0].toLowerCase()),K+S[0].length):-1}function g(O,V,K){var S=b.exec(V.slice(K));return S?(O.m=T.get(S[0].toLowerCase()),K+S[0].length):-1}function w(O,V,K){return $(O,e,V,K)}function A(O,V,K){return $(O,r,V,K)}function N(O,V,K){return $(O,i,V,K)}function P(O){return a[O.getDay()]}function j(O){return o[O.getDay()]}function G(O){return l[O.getMonth()]}function Z(O){return s[O.getMonth()]}function at(O){return n[+(O.getHours()>=12)]}function Bt(O){return 1+~~(O.getMonth()/3)}function Ft(O){return a[O.getUTCDay()]}function Gt(O){return o[O.getUTCDay()]}function gt(O){return l[O.getUTCMonth()]}function Rt(O){return s[O.getUTCMonth()]}function ht(O){return n[+(O.getUTCHours()>=12)]}function It(O){return 1+~~(O.getUTCMonth()/3)}return{format:function(O){var V=F(O+="",M);return V.toString=function(){return O},V},parse:function(O){var V=y(O+="",!1);return V.toString=function(){return O},V},utcFormat:function(O){var V=F(O+="",E);return V.toString=function(){return O},V},utcParse:function(O){var V=y(O+="",!0);return V.toString=function(){return O},V}}}var Ch={"-":"",_:" ",0:"0"},kt=/^\s*\d+/,oy=/^%/,ay=/[\\^$*+?|[\]().{}]/g;function tt(t,e,r){var i=t<0?"-":"",n=(i?-t:t)+"",o=n.length;return i+(o[e.toLowerCase(),r]))}function ly(t,e,r){var i=kt.exec(e.slice(r,r+1));return i?(t.w=+i[0],r+i[0].length):-1}function cy(t,e,r){var i=kt.exec(e.slice(r,r+1));return i?(t.u=+i[0],r+i[0].length):-1}function uy(t,e,r){var i=kt.exec(e.slice(r,r+2));return i?(t.U=+i[0],r+i[0].length):-1}function hy(t,e,r){var i=kt.exec(e.slice(r,r+2));return i?(t.V=+i[0],r+i[0].length):-1}function fy(t,e,r){var i=kt.exec(e.slice(r,r+2));return i?(t.W=+i[0],r+i[0].length):-1}function Th(t,e,r){var i=kt.exec(e.slice(r,r+4));return i?(t.y=+i[0],r+i[0].length):-1}function vh(t,e,r){var i=kt.exec(e.slice(r,r+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),r+i[0].length):-1}function py(t,e,r){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),r+i[0].length):-1}function dy(t,e,r){var i=kt.exec(e.slice(r,r+1));return i?(t.q=i[0]*3-3,r+i[0].length):-1}function my(t,e,r){var i=kt.exec(e.slice(r,r+2));return i?(t.m=i[0]-1,r+i[0].length):-1}function Sh(t,e,r){var i=kt.exec(e.slice(r,r+2));return i?(t.d=+i[0],r+i[0].length):-1}function gy(t,e,r){var i=kt.exec(e.slice(r,r+3));return i?(t.m=0,t.d=+i[0],r+i[0].length):-1}function kh(t,e,r){var i=kt.exec(e.slice(r,r+2));return i?(t.H=+i[0],r+i[0].length):-1}function xy(t,e,r){var i=kt.exec(e.slice(r,r+2));return i?(t.M=+i[0],r+i[0].length):-1}function yy(t,e,r){var i=kt.exec(e.slice(r,r+2));return i?(t.S=+i[0],r+i[0].length):-1}function _y(t,e,r){var i=kt.exec(e.slice(r,r+3));return i?(t.L=+i[0],r+i[0].length):-1}function by(t,e,r){var i=kt.exec(e.slice(r,r+6));return i?(t.L=Math.floor(i[0]/1e3),r+i[0].length):-1}function Cy(t,e,r){var i=oy.exec(e.slice(r,r+1));return i?r+i[0].length:-1}function Ty(t,e,r){var i=kt.exec(e.slice(r));return i?(t.Q=+i[0],r+i[0].length):-1}function vy(t,e,r){var i=kt.exec(e.slice(r));return i?(t.s=+i[0],r+i[0].length):-1}function wh(t,e){return tt(t.getDate(),e,2)}function Sy(t,e){return tt(t.getHours(),e,2)}function ky(t,e){return tt(t.getHours()%12||12,e,2)}function wy(t,e){return tt(1+ke.count(Vt(t),t),e,3)}function Lh(t,e){return tt(t.getMilliseconds(),e,3)}function By(t,e){return Lh(t,e)+"000"}function Fy(t,e){return tt(t.getMonth()+1,e,2)}function Ay(t,e){return tt(t.getMinutes(),e,2)}function My(t,e){return tt(t.getSeconds(),e,2)}function Ly(t){var e=t.getDay();return e===0?7:e}function Ey(t,e){return tt(we.count(Vt(t)-1,t),e,2)}function Eh(t){var e=t.getDay();return e>=4||e===0?Re(t):Re.ceil(t)}function Oy(t,e){return t=Eh(t),tt(Re.count(Vt(t),t)+(Vt(t).getDay()===4),e,2)}function Iy(t){return t.getDay()}function Dy(t,e){return tt(Kr.count(Vt(t)-1,t),e,2)}function Ny(t,e){return tt(t.getFullYear()%100,e,2)}function Ry(t,e){return t=Eh(t),tt(t.getFullYear()%100,e,2)}function Py(t,e){return tt(t.getFullYear()%1e4,e,4)}function $y(t,e){var r=t.getDay();return t=r>=4||r===0?Re(t):Re.ceil(t),tt(t.getFullYear()%1e4,e,4)}function zy(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+tt(e/60|0,"0",2)+tt(e%60,"0",2)}function Bh(t,e){return tt(t.getUTCDate(),e,2)}function qy(t,e){return tt(t.getUTCHours(),e,2)}function Wy(t,e){return tt(t.getUTCHours()%12||12,e,2)}function Uy(t,e){return tt(1+$i.count(ie(t),t),e,3)}function Oh(t,e){return tt(t.getUTCMilliseconds(),e,3)}function Hy(t,e){return Oh(t,e)+"000"}function Yy(t,e){return tt(t.getUTCMonth()+1,e,2)}function jy(t,e){return tt(t.getUTCMinutes(),e,2)}function Gy(t,e){return tt(t.getUTCSeconds(),e,2)}function Vy(t){var e=t.getUTCDay();return e===0?7:e}function Xy(t,e){return tt(yr.count(ie(t)-1,t),e,2)}function Ih(t){var e=t.getUTCDay();return e>=4||e===0?Pe(t):Pe.ceil(t)}function Ky(t,e){return t=Ih(t),tt(Pe.count(ie(t),t)+(ie(t).getUTCDay()===4),e,2)}function Zy(t){return t.getUTCDay()}function Qy(t,e){return tt(Zr.count(ie(t)-1,t),e,2)}function Jy(t,e){return tt(t.getUTCFullYear()%100,e,2)}function t_(t,e){return t=Ih(t),tt(t.getUTCFullYear()%100,e,2)}function e_(t,e){return tt(t.getUTCFullYear()%1e4,e,4)}function r_(t,e){var r=t.getUTCDay();return t=r>=4||r===0?Pe(t):Pe.ceil(t),tt(t.getUTCFullYear()%1e4,e,4)}function i_(){return"+0000"}function Fh(){return"%"}function Ah(t){return+t}function Mh(t){return Math.floor(+t/1e3)}var Jr,Qn,Dh,Nh,Rh;Ls({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function Ls(t){return Jr=Ms(t),Qn=Jr.format,Dh=Jr.parse,Nh=Jr.utcFormat,Rh=Jr.utcParse,Jr}function Es(t,e){t=t.slice();var r=0,i=t.length-1,n=t[r],o=t[i],a;return o1?0:t<-1?ti:Math.acos(t)}function Is(t){return t>=1?Ui:t<=-1?-Ui:Math.asin(t)}var Ds=Math.PI,Ns=2*Ds,br=1e-6,s_=Ns-br;function Uh(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Uh;let r=10**e;return function(i){this._+=i[0];for(let n=1,o=i.length;nbr)if(!(Math.abs(h*l-c*u)>br)||!o)this._append`L${this._x1=e},${this._y1=r}`;else{let p=i-a,x=n-s,b=l*l+c*c,T=p*p+x*x,B=Math.sqrt(b),v=Math.sqrt(f),M=o*Math.tan((Ds-Math.acos((b+f-T)/(2*B*v)))/2),E=M/v,I=M/B;Math.abs(E-1)>br&&this._append`L${e+E*u},${r+E*h}`,this._append`A${o},${o},0,0,${+(h*p>u*x)},${this._x1=e+I*l},${this._y1=r+I*c}`}}arc(e,r,i,n,o,a){if(e=+e,r=+r,i=+i,a=!!a,i<0)throw new Error(`negative radius: ${i}`);let s=i*Math.cos(n),l=i*Math.sin(n),c=e+s,u=r+l,h=1^a,f=a?n-o:o-n;this._x1===null?this._append`M${c},${u}`:(Math.abs(this._x1-c)>br||Math.abs(this._y1-u)>br)&&this._append`L${c},${u}`,i&&(f<0&&(f=f%Ns+Ns),f>s_?this._append`A${i},${i},0,1,${h},${e-s},${r-l}A${i},${i},0,1,${h},${this._x1=c},${this._y1=u}`:f>br&&this._append`A${i},${i},0,${+(f>=Ds)},${h},${this._x1=e+i*Math.cos(o)},${this._y1=r+i*Math.sin(o)}`)}rect(e,r,i,n){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${i=+i}v${+n}h${-i}Z`}toString(){return this._}};function Hh(){return new Cr}Hh.prototype=Cr.prototype;function to(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(r==null)e=null;else{let i=Math.floor(r);if(!(i>=0))throw new RangeError(`invalid digits: ${r}`);e=i}return t},()=>new Cr(e)}function c_(t){return t.innerRadius}function u_(t){return t.outerRadius}function h_(t){return t.startAngle}function f_(t){return t.endAngle}function p_(t){return t&&t.padAngle}function d_(t,e,r,i,n,o,a,s){var l=r-t,c=i-e,u=a-n,h=s-o,f=h*l-u*c;if(!(f*fw*w+A*A&&($=rt,et=C),{cx:$,cy:et,x01:-u,y01:-h,x11:$*(n/I-1),y11:et*(n/I-1)}}function m_(){var t=c_,e=u_,r=ct(0),i=null,n=h_,o=f_,a=p_,s=null,l=to(c);function c(){var u,h,f=+t.apply(this,arguments),p=+e.apply(this,arguments),x=n.apply(this,arguments)-Ui,b=o.apply(this,arguments)-Ui,T=Os(b-x),B=b>x;if(s||(s=u=l()),pwt))s.moveTo(0,0);else if(T>ei-wt)s.moveTo(p*$e(x),p*ne(x)),s.arc(0,0,p,x,b,!B),f>wt&&(s.moveTo(f*$e(b),f*ne(b)),s.arc(0,0,f,b,x,B));else{var v=x,M=b,E=x,I=b,F=T,y=T,$=a.apply(this,arguments)/2,et=$>wt&&(i?+i.apply(this,arguments):_r(f*f+p*p)),rt=Jn(Os(p-f)/2,+r.apply(this,arguments)),C=rt,_=rt,g,w;if(et>wt){var A=Is(et/f*ne($)),N=Is(et/p*ne($));(F-=A*2)>wt?(A*=B?1:-1,E+=A,I-=A):(F=0,E=I=(x+b)/2),(y-=N*2)>wt?(N*=B?1:-1,v+=N,M-=N):(y=0,v=M=(x+b)/2)}var P=p*$e(v),j=p*ne(v),G=f*$e(I),Z=f*ne(I);if(rt>wt){var at=p*$e(M),Bt=p*ne(M),Ft=f*$e(E),Gt=f*ne(E),gt;if(Twt?_>wt?(g=eo(Ft,Gt,P,j,p,_,B),w=eo(at,Bt,G,Z,p,_,B),s.moveTo(g.cx+g.x01,g.cy+g.y01),_wt)||!(F>wt)?s.lineTo(G,Z):C>wt?(g=eo(G,Z,at,Bt,f,-C,B),w=eo(P,j,Ft,Gt,f,-C,B),s.lineTo(g.cx+g.x01,g.cy+g.y01),Ct?1:e>=t?0:NaN}function Xh(t){return t}function x_(){var t=Xh,e=Vh,r=null,i=ct(0),n=ct(ei),o=ct(0);function a(s){var l,c=(s=ro(s)).length,u,h,f=0,p=new Array(c),x=new Array(c),b=+i.apply(this,arguments),T=Math.min(ei,Math.max(-ei,n.apply(this,arguments)-b)),B,v=Math.min(Math.abs(T)/c,o.apply(this,arguments)),M=v*(T<0?-1:1),E;for(l=0;l0&&(f+=E);for(e!=null?p.sort(function(I,F){return e(x[I],x[F])}):r!=null&&p.sort(function(I,F){return r(s[I],s[F])}),l=0,h=f?(T-c*M)/f:0;l0?E*h:0)+M,x[u]={data:s[u],index:l,value:E,startAngle:b,endAngle:B,padAngle:v};return x}return a.value=function(s){return arguments.length?(t=typeof s=="function"?s:ct(+s),a):t},a.sortValues=function(s){return arguments.length?(e=s,r=null,a):e},a.sort=function(s){return arguments.length?(r=s,e=null,a):r},a.startAngle=function(s){return arguments.length?(i=typeof s=="function"?s:ct(+s),a):i},a.endAngle=function(s){return arguments.length?(n=typeof s=="function"?s:ct(+s),a):n},a.padAngle=function(s){return arguments.length?(o=typeof s=="function"?s:ct(+s),a):o},a}function ri(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function Yi(t){this._context=t}Yi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ri(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ri(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Rs(t){return new Yi(t)}var io=class{constructor(e,r){this._context=e,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,r){switch(e=+e,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,r,e,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,e,this._y0,e,r);break}}this._x0=e,this._y0=r}};function Ps(t){return new io(t,!0)}function $s(t){return new io(t,!1)}function Kt(){}function Kh(t){this._context=t}Kh.prototype={areaStart:Kt,areaEnd:Kt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ri(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function zs(t){return new Kh(t)}function Zh(t){this._context=t}Zh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,i=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,i):this._context.moveTo(r,i);break;case 3:this._point=4;default:ri(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function qs(t){return new Zh(t)}function Qh(t,e){this._basis=new Yi(t),this._beta=e}Qh.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var i=t[0],n=e[0],o=t[r]-i,a=e[r]-n,s=-1,l;++s<=r;)l=s/r,this._basis.point(this._beta*t[s]+(1-this._beta)*(i+l*o),this._beta*e[s]+(1-this._beta)*(n+l*a));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var Ws=function t(e){function r(i){return e===1?new Yi(i):new Qh(i,e)}return r.beta=function(i){return t(+i)},r}(.85);function ii(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function no(t,e){this._context=t,this._k=(1-e)/6}no.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:ii(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:ii(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Us=function t(e){function r(i){return new no(i,e)}return r.tension=function(i){return t(+i)},r}(0);function oo(t,e){this._context=t,this._k=(1-e)/6}oo.prototype={areaStart:Kt,areaEnd:Kt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:ii(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Hs=function t(e){function r(i){return new oo(i,e)}return r.tension=function(i){return t(+i)},r}(0);function ao(t,e){this._context=t,this._k=(1-e)/6}ao.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:ii(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ys=function t(e){function r(i){return new ao(i,e)}return r.tension=function(i){return t(+i)},r}(0);function ji(t,e,r){var i=t._x1,n=t._y1,o=t._x2,a=t._y2;if(t._l01_a>wt){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);i=(i*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,n=(n*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>wt){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*c+t._x1*t._l23_2a-e*t._l12_2a)/u,a=(a*c+t._y1*t._l23_2a-r*t._l12_2a)/u}t._context.bezierCurveTo(i,n,o,a,t._x2,t._y2)}function Jh(t,e){this._context=t,this._alpha=e}Jh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:ji(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var js=function t(e){function r(i){return e?new Jh(i,e):new no(i,0)}return r.alpha=function(i){return t(+i)},r}(.5);function tf(t,e){this._context=t,this._alpha=e}tf.prototype={areaStart:Kt,areaEnd:Kt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:ji(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Gs=function t(e){function r(i){return e?new tf(i,e):new oo(i,0)}return r.alpha=function(i){return t(+i)},r}(.5);function ef(t,e){this._context=t,this._alpha=e}ef.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:ji(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Vs=function t(e){function r(i){return e?new ef(i,e):new ao(i,0)}return r.alpha=function(i){return t(+i)},r}(.5);function rf(t){this._context=t}rf.prototype={areaStart:Kt,areaEnd:Kt,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};function Xs(t){return new rf(t)}function nf(t){return t<0?-1:1}function of(t,e,r){var i=t._x1-t._x0,n=e-t._x1,o=(t._y1-t._y0)/(i||n<0&&-0),a=(r-t._y1)/(n||i<0&&-0),s=(o*n+a*i)/(i+n);return(nf(o)+nf(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(s))||0}function af(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function Ks(t,e,r){var i=t._x0,n=t._y0,o=t._x1,a=t._y1,s=(o-i)/3;t._context.bezierCurveTo(i+s,n+s*e,o-s,a-s*r,o,a)}function so(t){this._context=t}so.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Ks(this,this._t0,af(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var r=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Ks(this,af(this,r=of(this,t,e)),r);break;default:Ks(this,this._t0,r=of(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}}};function sf(t){this._context=new lf(t)}(sf.prototype=Object.create(so.prototype)).point=function(t,e){so.prototype.point.call(this,e,t)};function lf(t){this._context=t}lf.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,r,i,n,o){this._context.bezierCurveTo(e,t,i,r,o,n)}};function Zs(t){return new so(t)}function Qs(t){return new sf(t)}function uf(t){this._context=t}uf.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,r=t.length;if(r)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),r===2)this._context.lineTo(t[1],e[1]);else for(var i=cf(t),n=cf(e),o=0,a=1;a=0;--e)n[e]=(a[e]-n[e+1])/o[e];for(o[r-1]=(t[r]+n[r-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}break}}this._x=t,this._y=e}};function tl(t){return new lo(t,.5)}function el(t){return new lo(t,0)}function rl(t){return new lo(t,1)}var y_={value:()=>{}};function ff(){for(var t=0,e=arguments.length,r={},i;t=0&&(i=r.slice(n+1),r=r.slice(0,n)),r&&!e.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:i}})}co.prototype=ff.prototype={constructor:co,on:function(t,e){var r=this._,i=__(t+"",r),n,o=-1,a=i.length;if(arguments.length<2){for(;++o0)for(var r=new Array(n),i=0,n,o;i=0&&t._call.call(void 0,e),t=t._next;--ni}function pf(){Tr=(ho=Ki.now())+fo,ni=Vi=0;try{gf()}finally{ni=0,v_(),Tr=0}}function T_(){var t=Ki.now(),e=t-ho;e>df&&(fo-=e,ho=t)}function v_(){for(var t,e=uo,r,i=1/0;e;)e._call?(i>e._time&&(i=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:uo=r);Xi=t,nl(i)}function nl(t){if(!ni){Vi&&(Vi=clearTimeout(Vi));var e=t-Tr;e>24?(t<1/0&&(Vi=setTimeout(pf,t-Ki.now()-fo)),Gi&&(Gi=clearInterval(Gi))):(Gi||(ho=Ki.now(),Gi=setInterval(T_,df)),ni=1,mf(pf))}}function mo(t,e,r){var i=new Zi;return e=e==null?0:+e,i.restart(n=>{i.stop(),t(n+e)},e,r),i}var S_=il("start","end","cancel","interrupt"),k_=[],_f=0,xf=1,xo=2,go=3,yf=4,yo=5,Ji=6;function ze(t,e,r,i,n,o){var a=t.__transition;if(!a)t.__transition={};else if(r in a)return;w_(t,r,{name:e,index:i,group:n,on:S_,tween:k_,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:_f})}function tn(t,e){var r=xt(t,e);if(r.state>_f)throw new Error("too late; already scheduled");return r}function Ot(t,e){var r=xt(t,e);if(r.state>go)throw new Error("too late; already running");return r}function xt(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function w_(t,e,r){var i=t.__transition,n;i[e]=r,r.timer=po(o,0,r.time);function o(c){r.state=xf,r.timer.restart(a,r.delay,r.time),r.delay<=c&&a(c-r.delay)}function a(c){var u,h,f,p;if(r.state!==xf)return l();for(u in i)if(p=i[u],p.name===r.name){if(p.state===go)return mo(a);p.state===yf?(p.state=Ji,p.timer.stop(),p.on.call("interrupt",t,t.__data__,p.index,p.group),delete i[u]):+uxo&&i.state=0&&(e=e.slice(0,r)),!e||e==="start"})}function j_(t,e,r){var i,n,o=Y_(e)?tn:Ot;return function(){var a=o(this,t),s=a.on;s!==i&&(n=(i=s).copy()).on(e,r),a.on=n}}function Mf(t,e){var r=this._id;return arguments.length<2?xt(this.node(),r).on.on(t):this.each(j_(r,t,e))}function G_(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function Lf(){return this.on("end.remove",G_(this._id))}function Ef(t){var e=this._name,r=this._id;typeof t!="function"&&(t=ar(t));for(var i=this._groups,n=i.length,o=new Array(n),a=0;aYf(e,r).then(i=>new DOMParser().parseFromString(i,t))}var u1=al("application/xml"),h1=al("text/html"),f1=al("image/svg+xml");function qe(t,e,r){this.k=t,this.x=e,this.y=r}qe.prototype={constructor:qe,scale:function(t){return t===1?this:new qe(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new qe(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var sl=new qe(1,0,0);ll.prototype=qe.prototype;function ll(t){for(;!t.__zoom;)if(!(t=t.parentNode))return sl;return t.__zoom}var vo={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{let e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?t+(e-t)*6*r:r<.5?e:r<.6666666666666666?t+(e-t)*(.6666666666666666-r)*6:t),hsl2rgb:({h:t,s:e,l:r},i)=>{if(!e)return r*2.55;t/=360,e/=100,r/=100;let n=r<.5?r*(1+e):r+e-r*e,o=2*r-n;switch(i){case"r":return vo.hue2rgb(o,n,t+.3333333333333333)*255;case"g":return vo.hue2rgb(o,n,t)*255;case"b":return vo.hue2rgb(o,n,t-.3333333333333333)*255}},rgb2hsl:({r:t,g:e,b:r},i)=>{t/=255,e/=255,r/=255;let n=Math.max(t,e,r),o=Math.min(t,e,r),a=(n+o)/2;if(i==="l")return a*100;if(n===o)return 0;let s=n-o,l=a>.5?s/(2-n-o):s/(n+o);if(i==="s")return l*100;switch(n){case t:return((e-r)/s+(ee>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),round:t=>Math.round(t*1e10)/1e10},Vf=p1;var d1={dec2hex:t=>{let e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}},Xf=d1;var m1={channel:Gf,lang:Vf,unit:Xf},q=m1;var Fe={};for(let t=0;t<=255;t++)Fe[t]=q.unit.dec2hex(t);var yt={ALL:0,RGB:1,HSL:2};var hl=class{constructor(){this.type=yt.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e}reset(){this.type=yt.ALL}is(e){return this.type===e}},Kf=hl;var fl=class{constructor(e,r){this.color=r,this.changed=!1,this.data=e,this.type=new Kf}set(e,r){return this.color=r,this.changed=!1,this.data=e,this.type.type=yt.ALL,this}_ensureHSL(){let e=this.data,{h:r,s:i,l:n}=e;r===void 0&&(e.h=q.channel.rgb2hsl(e,"h")),i===void 0&&(e.s=q.channel.rgb2hsl(e,"s")),n===void 0&&(e.l=q.channel.rgb2hsl(e,"l"))}_ensureRGB(){let e=this.data,{r,g:i,b:n}=e;r===void 0&&(e.r=q.channel.hsl2rgb(e,"r")),i===void 0&&(e.g=q.channel.hsl2rgb(e,"g")),n===void 0&&(e.b=q.channel.hsl2rgb(e,"b"))}get r(){let e=this.data,r=e.r;return!this.type.is(yt.HSL)&&r!==void 0?r:(this._ensureHSL(),q.channel.hsl2rgb(e,"r"))}get g(){let e=this.data,r=e.g;return!this.type.is(yt.HSL)&&r!==void 0?r:(this._ensureHSL(),q.channel.hsl2rgb(e,"g"))}get b(){let e=this.data,r=e.b;return!this.type.is(yt.HSL)&&r!==void 0?r:(this._ensureHSL(),q.channel.hsl2rgb(e,"b"))}get h(){let e=this.data,r=e.h;return!this.type.is(yt.RGB)&&r!==void 0?r:(this._ensureRGB(),q.channel.rgb2hsl(e,"h"))}get s(){let e=this.data,r=e.s;return!this.type.is(yt.RGB)&&r!==void 0?r:(this._ensureRGB(),q.channel.rgb2hsl(e,"s"))}get l(){let e=this.data,r=e.l;return!this.type.is(yt.RGB)&&r!==void 0?r:(this._ensureRGB(),q.channel.rgb2hsl(e,"l"))}get a(){return this.data.a}set r(e){this.type.set(yt.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(yt.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(yt.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(yt.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(yt.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(yt.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}},Zf=fl;var g1=new Zf({r:0,g:0,b:0,a:0},"transparent"),We=g1;var Qf={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(t.charCodeAt(0)!==35)return;let e=t.match(Qf.re);if(!e)return;let r=e[1],i=parseInt(r,16),n=r.length,o=n%4===0,a=n>4,s=a?1:17,l=a?8:4,c=o?0:-1,u=a?255:15;return We.set({r:(i>>l*(c+3)&u)*s,g:(i>>l*(c+2)&u)*s,b:(i>>l*(c+1)&u)*s,a:o?(i&u)*s/255:1},t)},stringify:t=>{let{r:e,g:r,b:i,a:n}=t;return n<1?`#${Fe[Math.round(e)]}${Fe[Math.round(r)]}${Fe[Math.round(i)]}${Fe[Math.round(n*255)]}`:`#${Fe[Math.round(e)]}${Fe[Math.round(r)]}${Fe[Math.round(i)]}`}},vr=Qf;var So={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{let e=t.match(So.hueRe);if(e){let[,r,i]=e;switch(i){case"grad":return q.channel.clamp.h(parseFloat(r)*.9);case"rad":return q.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return q.channel.clamp.h(parseFloat(r)*360)}}return q.channel.clamp.h(parseFloat(t))},parse:t=>{let e=t.charCodeAt(0);if(e!==104&&e!==72)return;let r=t.match(So.re);if(!r)return;let[,i,n,o,a,s]=r;return We.set({h:So._hue2deg(i),s:q.channel.clamp.s(parseFloat(n)),l:q.channel.clamp.l(parseFloat(o)),a:a?q.channel.clamp.a(s?parseFloat(a)/100:parseFloat(a)):1},t)},stringify:t=>{let{h:e,s:r,l:i,a:n}=t;return n<1?`hsla(${q.lang.round(e)}, ${q.lang.round(r)}%, ${q.lang.round(i)}%, ${n})`:`hsl(${q.lang.round(e)}, ${q.lang.round(r)}%, ${q.lang.round(i)}%)`}},en=So;var ko={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();let e=ko.colors[t];if(e)return vr.parse(e)},stringify:t=>{let e=vr.stringify(t);for(let r in ko.colors)if(ko.colors[r]===e)return r}},pl=ko;var Jf={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{let e=t.charCodeAt(0);if(e!==114&&e!==82)return;let r=t.match(Jf.re);if(!r)return;let[,i,n,o,a,s,l,c,u]=r;return We.set({r:q.channel.clamp.r(n?parseFloat(i)*2.55:parseFloat(i)),g:q.channel.clamp.g(a?parseFloat(o)*2.55:parseFloat(o)),b:q.channel.clamp.b(l?parseFloat(s)*2.55:parseFloat(s)),a:c?q.channel.clamp.a(u?parseFloat(c)/100:parseFloat(c)):1},t)},stringify:t=>{let{r:e,g:r,b:i,a:n}=t;return n<1?`rgba(${q.lang.round(e)}, ${q.lang.round(r)}, ${q.lang.round(i)}, ${q.lang.round(n)})`:`rgb(${q.lang.round(e)}, ${q.lang.round(r)}, ${q.lang.round(i)})`}},rn=Jf;var x1={format:{keyword:pl,hex:vr,rgb:rn,rgba:rn,hsl:en,hsla:en},parse:t=>{if(typeof t!="string")return t;let e=vr.parse(t)||rn.parse(t)||en.parse(t)||pl.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(yt.HSL)||t.data.r===void 0?en.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?rn.stringify(t):vr.stringify(t)},_t=x1;var y1=t=>{let{r:e,g:r,b:i}=_t.parse(t),n=.2126*q.channel.toLinear(e)+.7152*q.channel.toLinear(r)+.0722*q.channel.toLinear(i);return q.lang.round(n)},tp=y1;var _1=t=>tp(t)>=.5,ep=_1;var b1=t=>!ep(t),Sr=b1;var C1=(t,e,r)=>{let i=_t.parse(t),n=i[e],o=q.channel.clamp[e](n+r);return n!==o&&(i[e]=o),_t.stringify(i)},wo=C1;var T1=(t,e)=>wo(t,"l",e),z=T1;var v1=(t,e)=>wo(t,"l",-e),H=v1;var S1=(t,e)=>{let r=_t.parse(t);for(let i in e)r[i]=q.channel.clamp[i](e[i]);return _t.stringify(r)},Bo=S1;var k1=(t,e,r=0,i=1)=>{if(typeof t!="number")return Bo(t,{a:e});let n=We.set({r:q.channel.clamp.r(t),g:q.channel.clamp.g(e),b:q.channel.clamp.b(r),a:q.channel.clamp.a(i)});return _t.stringify(n)},Ue=k1;var w1=(t,e)=>q.lang.round(_t.parse(t)[e]),B1=w1;var F1=(t,e)=>{let r=_t.parse(t),i={};for(let n in e)e[n]&&(i[n]=r[n]+e[n]);return Bo(t,i)},m=F1;var A1=(t,e,r=50)=>{let{r:i,g:n,b:o,a}=_t.parse(t),{r:s,g:l,b:c,a:u}=_t.parse(e),h=r/100,f=h*2-1,p=a-u,b=((f*p===-1?f:(f+p)/(1+f*p))+1)/2,T=1-b,B=i*b+s*T,v=n*b+l*T,M=o*b+c*T,E=a*h+u*(1-h);return Ue(B,v,M,E)},rp=A1;var M1=(t,e=100)=>{let r=_t.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,rp(r,t,e)},L=M1;var L1=typeof global=="object"&&global&&global.Object===Object&&global,Fo=L1;var E1=typeof self=="object"&&self&&self.Object===Object&&self,O1=Fo||E1||Function("return this")(),pt=O1;var I1=pt.Symbol,ai=I1;var ip=Object.prototype,D1=ip.hasOwnProperty,N1=ip.toString,nn=ai?ai.toStringTag:void 0;function R1(t){var e=D1.call(t,nn),r=t[nn];try{t[nn]=void 0;var i=!0}catch{}var n=N1.call(t);return i&&(e?t[nn]=r:delete t[nn]),n}var np=R1;var P1=Object.prototype,$1=P1.toString;function z1(t){return $1.call(t)}var op=z1;var q1="[object Null]",W1="[object Undefined]",ap=ai?ai.toStringTag:void 0;function U1(t){return t==null?t===void 0?W1:q1:ap&&ap in Object(t)?np(t):op(t)}var oe=U1;function H1(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var Ut=H1;var Y1="[object AsyncFunction]",j1="[object Function]",G1="[object GeneratorFunction]",V1="[object Proxy]";function X1(t){if(!Ut(t))return!1;var e=oe(t);return e==j1||e==G1||e==Y1||e==V1}var si=X1;var K1=pt["__core-js_shared__"],Ao=K1;var sp=function(){var t=/[^.]+$/.exec(Ao&&Ao.keys&&Ao.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function Z1(t){return!!sp&&sp in t}var lp=Z1;var Q1=Function.prototype,J1=Q1.toString;function tb(t){if(t!=null){try{return J1.call(t)}catch{}try{return t+""}catch{}}return""}var Ae=tb;var eb=/[\\^$.*+?()[\]{}|]/g,rb=/^\[object .+?Constructor\]$/,ib=Function.prototype,nb=Object.prototype,ob=ib.toString,ab=nb.hasOwnProperty,sb=RegExp("^"+ob.call(ab).replace(eb,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function lb(t){if(!Ut(t)||lp(t))return!1;var e=si(t)?sb:rb;return e.test(Ae(t))}var cp=lb;function cb(t,e){return t?.[e]}var up=cb;function ub(t,e){var r=up(t,e);return cp(r)?r:void 0}var Ht=ub;var hb=Ht(Object,"create"),Me=hb;function fb(){this.__data__=Me?Me(null):{},this.size=0}var hp=fb;function pb(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var fp=pb;var db="__lodash_hash_undefined__",mb=Object.prototype,gb=mb.hasOwnProperty;function xb(t){var e=this.__data__;if(Me){var r=e[t];return r===db?void 0:r}return gb.call(e,t)?e[t]:void 0}var pp=xb;var yb=Object.prototype,_b=yb.hasOwnProperty;function bb(t){var e=this.__data__;return Me?e[t]!==void 0:_b.call(e,t)}var dp=bb;var Cb="__lodash_hash_undefined__";function Tb(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Me&&e===void 0?Cb:e,this}var mp=Tb;function li(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1}var _p=Mb;function Lb(t,e){var r=this.__data__,i=Ye(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}var bp=Lb;function ci(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=xC}var Oo=yC;function _C(t){return t!=null&&Oo(t.length)&&!si(t)}var Ke=_C;function bC(t){return ge(t)&&Ke(t)}var Gp=bC;function CC(){return!1}var Vp=CC;var Zp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xp=Zp&&typeof module=="object"&&module&&!module.nodeType&&module,TC=Xp&&Xp.exports===Zp,Kp=TC?pt.Buffer:void 0,vC=Kp?Kp.isBuffer:void 0,SC=vC||Vp,di=SC;var kC="[object Object]",wC=Function.prototype,BC=Object.prototype,Qp=wC.toString,FC=BC.hasOwnProperty,AC=Qp.call(Object);function MC(t){if(!ge(t)||oe(t)!=kC)return!1;var e=Eo(t);if(e===null)return!0;var r=FC.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&Qp.call(r)==AC}var Jp=MC;var LC="[object Arguments]",EC="[object Array]",OC="[object Boolean]",IC="[object Date]",DC="[object Error]",NC="[object Function]",RC="[object Map]",PC="[object Number]",$C="[object Object]",zC="[object RegExp]",qC="[object Set]",WC="[object String]",UC="[object WeakMap]",HC="[object ArrayBuffer]",YC="[object DataView]",jC="[object Float32Array]",GC="[object Float64Array]",VC="[object Int8Array]",XC="[object Int16Array]",KC="[object Int32Array]",ZC="[object Uint8Array]",QC="[object Uint8ClampedArray]",JC="[object Uint16Array]",tT="[object Uint32Array]",lt={};lt[jC]=lt[GC]=lt[VC]=lt[XC]=lt[KC]=lt[ZC]=lt[QC]=lt[JC]=lt[tT]=!0;lt[LC]=lt[EC]=lt[HC]=lt[OC]=lt[YC]=lt[IC]=lt[DC]=lt[NC]=lt[RC]=lt[PC]=lt[$C]=lt[zC]=lt[qC]=lt[WC]=lt[UC]=!1;function eT(t){return ge(t)&&Oo(t.length)&&!!lt[oe(t)]}var td=eT;function rT(t){return function(e){return t(e)}}var ed=rT;var rd=typeof exports=="object"&&exports&&!exports.nodeType&&exports,sn=rd&&typeof module=="object"&&module&&!module.nodeType&&module,iT=sn&&sn.exports===rd,yl=iT&&Fo.process,nT=function(){try{var t=sn&&sn.require&&sn.require("util").types;return t||yl&&yl.binding&&yl.binding("util")}catch{}}(),_l=nT;var id=_l&&_l.isTypedArray,oT=id?ed(id):td,mi=oT;function aT(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}var ln=aT;var sT=Object.prototype,lT=sT.hasOwnProperty;function cT(t,e,r){var i=t[e];(!(lT.call(t,e)&&He(i,r))||r===void 0&&!(e in t))&&pi(t,e,r)}var nd=cT;function uT(t,e,r,i){var n=!r;r||(r={});for(var o=-1,a=e.length;++o-1&&t%1==0&&t0){if(++e>=MT)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var _d=OT;var IT=_d(yd),bd=IT;function DT(t,e){return bd(gd(t,e,No),t+"")}var Cd=DT;function NT(t,e,r){if(!Ut(r))return!1;var i=typeof e;return(i=="number"?Ke(r)&&Io(e,r.length):i=="string"&&e in r)?He(r[e],t):!1}var Td=NT;function RT(t){return Cd(function(e,r){var i=-1,n=r.length,o=n>1?r[n-1]:void 0,a=n>2?r[2]:void 0;for(o=t.length>3&&typeof o=="function"?(n--,o):void 0,a&&Td(r[0],r[1],a)&&(o=n<3?void 0:o,n=1),e=Object(e);++i0?Fr(yi,--Zt):0,xi--,dt===10&&(xi=1,Vo--),dt}function Qt(){return dt=Zt2||bl(dt)>3?"":" "}function Ud(t,e){for(;--e&&Qt()&&!(dt<48||dt>102||dt>57&&dt<65||dt>70&&dt<97););return Ko(t,un()+(e<6&&Ze()==32&&Qt()==32))}function Cl(t){for(;Qt();)switch(dt){case t:return Zt;case 34:case 39:t!==34&&t!==39&&Cl(dt);break;case 40:t===41&&Cl(t);break;case 92:Qt();break}return Zt}function Hd(t,e){for(;Qt()&&t+dt!==47+10;)if(t+dt===42+42&&Ze()===47)break;return"/*"+Ko(e,Zt-1)+"*"+cn(t===47?t:Qt())}function Yd(t){for(;!bl(Ze());)Qt();return Ko(t,Zt)}function Vd(t){return qd(Qo("",null,null,null,[""],t=zd(t),0,[0],t))}function Qo(t,e,r,i,n,o,a,s,l){for(var c=0,u=0,h=a,f=0,p=0,x=0,b=1,T=1,B=1,v=0,M="",E=n,I=o,F=i,y=M;T;)switch(x=v,v=Qt()){case 40:if(x!=108&&Fr(y,h-1)==58){Nd(y+=jo(Zo(v),"&","&\f"),"&\f")!=-1&&(B=-1);break}case 34:case 39:case 91:y+=Zo(v);break;case 9:case 10:case 13:case 32:y+=Wd(x);break;case 92:y+=Ud(un()-1,7);continue;case 47:switch(Ze()){case 42:case 47:gi(nv(Hd(Qt(),un()),e,r),l);break;default:y+="/"}break;case 123*b:s[c++]=ae(y)*B;case 125*b:case 59:case 0:switch(v){case 0:case 125:T=0;case 59+u:p>0&&ae(y)-h&&gi(p>32?Gd(y+";",i,r,h-1):Gd(jo(y," ","")+";",i,r,h-2),l);break;case 59:y+=";";default:if(gi(F=jd(y,e,r,c,u,n,s,M,E=[],I=[],h),o),v===123)if(u===0)Qo(y,e,F,F,E,o,h,s,I);else switch(f===99&&Fr(y,3)===110?100:f){case 100:case 109:case 115:Qo(t,F,F,i&&gi(jd(t,F,F,0,0,n,s,M,n,E=[],h),I),n,I,h,s,i?E:I);break;default:Qo(y,F,F,F,[""],I,0,s,I)}}c=u=p=0,b=B=1,M=y="",h=a;break;case 58:h=1+ae(y),p=x;default:if(b<1){if(v==123)--b;else if(v==125&&b++==0&&$d()==125)continue}switch(y+=cn(v),v*b){case 38:B=u>0?1:(y+="\f",-1);break;case 44:s[c++]=(ae(y)-1)*B,B=1;break;case 64:Ze()===45&&(y+=Zo(Qt())),f=Ze(),u=h=ae(M=y+=Yd(un())),v++;break;case 45:x===45&&ae(y)==2&&(b=0)}}return o}function jd(t,e,r,i,n,o,a,s,l,c,u){for(var h=n-1,f=n===0?o:[""],p=Go(f),x=0,b=0,T=0;x0?f[B]+" "+v:jo(v,/&\f/g,f[B])))&&(l[T++]=M);return Xo(t,e,r,n===0?Uo:s,l,c,u)}function nv(t,e,r){return Xo(t,e,r,Wo,cn(Pd()),Ar(t,2,-2),0)}function Gd(t,e,r,i){return Xo(t,e,r,Ho,Ar(t,0,i),Ar(t,i+1,-1),i)}function Jo(t,e){for(var r="",i=Go(t),n=0;n{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},Ol=function(t="fatal"){let e=Le.fatal;typeof t=="string"?(t=t.toLowerCase(),t in Le&&(e=Le[t])):typeof t=="number"&&(e=t),Y.trace=()=>{},Y.debug=()=>{},Y.info=()=>{},Y.warn=()=>{},Y.error=()=>{},Y.fatal=()=>{},e<=Le.fatal&&(Y.fatal=console.error?console.error.bind(console,Jt("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Jt("FATAL"))),e<=Le.error&&(Y.error=console.error?console.error.bind(console,Jt("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Jt("ERROR"))),e<=Le.warn&&(Y.warn=console.warn?console.warn.bind(console,Jt("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Jt("WARN"))),e<=Le.info&&(Y.info=console.info?console.info.bind(console,Jt("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Jt("INFO"))),e<=Le.debug&&(Y.debug=console.debug?console.debug.bind(console,Jt("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Jt("DEBUG"))),e<=Le.trace&&(Y.trace=console.debug?console.debug.bind(console,Jt("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Jt("TRACE")))},Jt=t=>`%c${(0,fm.default)().format("ss.SSS")} : ${t} : `,pa=//gi,ov=t=>t?mm(t).replace(/\\n/g,"#br#").split("#br#"):[""],dm=t=>dn.default.sanitize(t),Kd=(t,e)=>{var r;if(((r=e.flowchart)==null?void 0:r.htmlLabels)!==!1){let i=e.securityLevel;i==="antiscript"||i==="strict"?t=dm(t):i!=="loose"&&(t=mm(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=cv(t))}return t},mn=(t,e)=>t&&(e.dompurifyConfig?t=dn.default.sanitize(Kd(t,e),e.dompurifyConfig).toString():t=dn.default.sanitize(Kd(t,e),{FORBID_TAGS:["style"]}).toString(),t),av=(t,e)=>typeof t=="string"?mn(t,e):t.flat().map(r=>mn(r,e)),sv=t=>pa.test(t),lv=t=>t.split(pa),cv=t=>t.replace(/#br#/g,"
"),mm=t=>t.replace(pa,"#br#"),uv=t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},gm=t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),hv=function(...t){let e=t.filter(r=>!isNaN(r));return Math.max(...e)},fv=function(...t){let e=t.filter(r=>!isNaN(r));return Math.min(...e)},Iz=function(t){let e=t.split(/(,)/),r=[];for(let i=0;i0&&i+1Math.max(0,t.split(e).length-1),pv=(t,e)=>{let r=wl(t,"~"),i=wl(e,"~");return r===1&&i===1},dv=t=>{let e=wl(t,"~"),r=!1;if(e<=1)return t;e%2!==0&&t.startsWith("~")&&(t=t.substring(1),r=!0);let i=[...t],n=i.indexOf("~"),o=i.lastIndexOf("~");for(;n!==-1&&o!==-1&&n!==o;)i[n]="<",i[o]=">",n=i.indexOf("~"),o=i.lastIndexOf("~");return r&&i.unshift("~"),i.join("")},Il={getRows:ov,sanitizeText:mn,sanitizeTextOrArray:av,hasBreaks:sv,splitBreaks:lv,lineBreakRegex:pa,removeScript:dm,getUrl:uv,evaluate:gm,getMax:hv,getMin:fv},qt=(t,e)=>e?m(t,{s:-40,l:10}):m(t,{s:-40,l:-10}),da="#ffffff",ma="#f2f2f2",mv=class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||m(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||m(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||qt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||qt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||qt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||qt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||L(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||L(this.tertiaryColor),this.lineColor=this.lineColor||L(this.background),this.arrowheadColor=this.arrowheadColor||L(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?H(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||H(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||L(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||z(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||m(this.primaryColor,{h:30}),this.cScale4=this.cScale4||m(this.primaryColor,{h:60}),this.cScale5=this.cScale5||m(this.primaryColor,{h:90}),this.cScale6=this.cScale6||m(this.primaryColor,{h:120}),this.cScale7=this.cScale7||m(this.primaryColor,{h:150}),this.cScale8=this.cScale8||m(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||m(this.primaryColor,{h:270}),this.cScale10=this.cScale10||m(this.primaryColor,{h:300}),this.cScale11=this.cScale11||m(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[i]=e[i]}),this.updateColors(),r.forEach(i=>{this[i]=e[i]})}},gv=t=>{let e=new mv;return e.calculate(t),e},xv=class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=z(this.primaryColor,16),this.tertiaryColor=m(this.primaryColor,{h:-160}),this.primaryBorderColor=L(this.background),this.secondaryBorderColor=qt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=qt(this.tertiaryColor,this.darkMode),this.primaryTextColor=L(this.primaryColor),this.secondaryTextColor=L(this.secondaryColor),this.tertiaryTextColor=L(this.tertiaryColor),this.lineColor=L(this.background),this.textColor=L(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=z(L("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=Ue(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=H("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=H(this.sectionBkgColor,10),this.taskBorderColor=Ue(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Ue(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=z(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=z(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=z(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=m(this.primaryColor,{h:64}),this.fillType3=m(this.secondaryColor,{h:64}),this.fillType4=m(this.primaryColor,{h:-64}),this.fillType5=m(this.secondaryColor,{h:-64}),this.fillType6=m(this.primaryColor,{h:128}),this.fillType7=m(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||m(this.primaryColor,{h:30}),this.cScale4=this.cScale4||m(this.primaryColor,{h:60}),this.cScale5=this.cScale5||m(this.primaryColor,{h:90}),this.cScale6=this.cScale6||m(this.primaryColor,{h:120}),this.cScale7=this.cScale7||m(this.primaryColor,{h:150}),this.cScale8=this.cScale8||m(this.primaryColor,{h:210}),this.cScale9=this.cScale9||m(this.primaryColor,{h:270}),this.cScale10=this.cScale10||m(this.primaryColor,{h:300}),this.cScale11=this.cScale11||m(this.primaryColor,{h:330});for(let e=0;e{this[i]=e[i]}),this.updateColors(),r.forEach(i=>{this[i]=e[i]})}},yv=t=>{let e=new xv;return e.calculate(t),e},_v=class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=m(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=m(this.primaryColor,{h:-160}),this.primaryBorderColor=qt(this.primaryColor,this.darkMode),this.secondaryBorderColor=qt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=qt(this.tertiaryColor,this.darkMode),this.primaryTextColor=L(this.primaryColor),this.secondaryTextColor=L(this.secondaryColor),this.tertiaryTextColor=L(this.tertiaryColor),this.lineColor=L(this.background),this.textColor=L(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=Ue(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||m(this.primaryColor,{h:30}),this.cScale4=this.cScale4||m(this.primaryColor,{h:60}),this.cScale5=this.cScale5||m(this.primaryColor,{h:90}),this.cScale6=this.cScale6||m(this.primaryColor,{h:120}),this.cScale7=this.cScale7||m(this.primaryColor,{h:150}),this.cScale8=this.cScale8||m(this.primaryColor,{h:210}),this.cScale9=this.cScale9||m(this.primaryColor,{h:270}),this.cScale10=this.cScale10||m(this.primaryColor,{h:300}),this.cScale11=this.cScale11||m(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||H(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||H(this.tertiaryColor,40);for(let e=0;e{this[i]=e[i]}),this.updateColors(),r.forEach(i=>{this[i]=e[i]})}},bv=t=>{let e=new _v;return e.calculate(t),e},Cv=class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=z("#cde498",10),this.primaryBorderColor=qt(this.primaryColor,this.darkMode),this.secondaryBorderColor=qt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=qt(this.tertiaryColor,this.darkMode),this.primaryTextColor=L(this.primaryColor),this.secondaryTextColor=L(this.secondaryColor),this.tertiaryTextColor=L(this.primaryColor),this.lineColor=L(this.background),this.textColor=L(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=H(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||m(this.primaryColor,{h:30}),this.cScale4=this.cScale4||m(this.primaryColor,{h:60}),this.cScale5=this.cScale5||m(this.primaryColor,{h:90}),this.cScale6=this.cScale6||m(this.primaryColor,{h:120}),this.cScale7=this.cScale7||m(this.primaryColor,{h:150}),this.cScale8=this.cScale8||m(this.primaryColor,{h:210}),this.cScale9=this.cScale9||m(this.primaryColor,{h:270}),this.cScale10=this.cScale10||m(this.primaryColor,{h:300}),this.cScale11=this.cScale11||m(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||H(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||H(this.tertiaryColor,40);for(let e=0;e{this[i]=e[i]}),this.updateColors(),r.forEach(i=>{this[i]=e[i]})}},Tv=t=>{let e=new Cv;return e.calculate(t),e},Bl=class{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=z(this.contrast,55),this.background="#ffffff",this.tertiaryColor=m(this.primaryColor,{h:-160}),this.primaryBorderColor=qt(this.primaryColor,this.darkMode),this.secondaryBorderColor=qt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=qt(this.tertiaryColor,this.darkMode),this.primaryTextColor=L(this.primaryColor),this.secondaryTextColor=L(this.secondaryColor),this.tertiaryTextColor=L(this.tertiaryColor),this.lineColor=L(this.background),this.textColor=L(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=z(this.contrast,55),this.border2=this.contrast,this.actorBorder=z(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let e=0;e{this[i]=e[i]}),this.updateColors(),r.forEach(i=>{this[i]=e[i]})}},vv=t=>{let e=new Bl;return e.calculate(t),e},Oe={base:{getThemeVariables:gv},dark:{getThemeVariables:yv},default:{getThemeVariables:bv},forest:{getThemeVariables:Tv},neutral:{getThemeVariables:vv}},Qe={flowchart:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},theme:"default",maxTextSize:5e4,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,fontSize:16},xm={...Qe,deterministicIDSeed:void 0,themeCSS:void 0,themeVariables:Oe.default.getThemeVariables(),sequence:{...Qe.sequence,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{...Qe.gantt,tickInterval:void 0,useWidth:void 0},c4:{...Qe.c4,useWidth:void 0,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}}},pie:{...Qe.pie,useWidth:984},requirement:{...Qe.requirement,useWidth:void 0},gitGraph:{...Qe.gitGraph,useMaxWidth:!1},sankey:{...Qe.sankey,useMaxWidth:!1}},ym=(t,e="")=>Object.keys(t).reduce((r,i)=>Array.isArray(t[i])?r:typeof t[i]=="object"&&t[i]!==null?[...r,e+i,...ym(t[i],"")]:[...r,e+i],[]),Sv=new Set(ym(xm,"")),kv=xm,ra=t=>{if(Y.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>ra(e));return}for(let e of Object.keys(t)){if(Y.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!Sv.has(e)||t[e]==null){Y.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){Y.debug("sanitizing object",e),ra(t[e]);continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let i of r)e.includes(i)&&(Y.debug("sanitizing css option",e),t[e]=wv(t[e]))}if(t.themeVariables)for(let e of Object.keys(t.themeVariables)){let r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}Y.debug("After sanitization",t)}},wv=t=>{let e=0,r=0;for(let i of t){if(e{for(let{id:e,detector:r,loader:i}of t)Cm(e,r,i)},Cm=(t,e,r)=>{Ci[t]?Y.error(`Detector with key ${t} already exists`):Ci[t]={detector:e,loader:r},Y.debug(`Detector with key ${t} added${r?" with loader":""}`)},Fv=t=>Ci[t].loader,Fl=(t,e,{depth:r=2,clobber:i=!1}={})=>{let n={depth:r,clobber:i};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(o=>Fl(t,o,n)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(o=>{t.includes(o)||t.push(o)}),t):t===void 0||r<=0?t!=null&&typeof t=="object"&&typeof e=="object"?Object.assign(t,e):e:(e!==void 0&&typeof t=="object"&&typeof e=="object"&&Object.keys(e).forEach(o=>{typeof e[o]=="object"&&(t[o]===void 0||typeof t[o]=="object")?(t[o]===void 0&&(t[o]=Array.isArray(e[o])?[]:{}),t[o]=Fl(t[o],e[o],{depth:r-1,clobber:i})):(i||typeof t[o]!="object"&&typeof e[o]!="object")&&(t[o]=e[o])}),t)},Dt=Fl,Av="\u200B",Mv={curveBasis:Rs,curveBasisClosed:zs,curveBasisOpen:qs,curveBumpX:Ps,curveBumpY:$s,curveBundle:Ws,curveCardinalClosed:Hs,curveCardinalOpen:Ys,curveCardinal:Us,curveCatmullRomClosed:Gs,curveCatmullRomOpen:Vs,curveCatmullRom:js,curveLinear:Hi,curveLinearClosed:Xs,curveMonotoneX:Zs,curveMonotoneY:Qs,curveNatural:Js,curveStep:tl,curveStepAfter:rl,curveStepBefore:el},Lv=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,Ev=function(t,e){let r=Tm(t,/(?:init\b)|(?:initialize\b)/),i={};if(Array.isArray(r)){let a=r.map(s=>s.args);ra(a),i=Dt(i,[...a])}else i=r.args;if(!i)return;let n=ga(t,e),o="config";return i[o]!==void 0&&(n==="flowchart-v2"&&(n="flowchart"),i[n]=i[o],delete i[o]),i},Tm=function(t,e=null){try{let r=new RegExp(`[%]{2}(?![{]${Lv.source})(?=[}][%]{2}).* +`,"ig");t=t.trim().replace(r,"").replace(/'/gm,'"'),Y.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let i,n=[];for(;(i=hn.exec(t))!==null;)if(i.index===hn.lastIndex&&hn.lastIndex++,i&&!e||e&&i[1]&&i[1].match(e)||e&&i[2]&&i[2].match(e)){let o=i[1]?i[1]:i[2],a=i[3]?i[3].trim():i[4]?JSON.parse(i[4].trim()):null;n.push({type:o,args:a})}return n.length===0?{type:t,args:null}:n.length===1?n[0]:n}catch(r){return Y.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},Ov=function(t){return t.replace(hn,"")},Iv=function(t,e){for(let[r,i]of e.entries())if(i.match(t))return r;return-1};function Dv(t,e){if(!t)return e;let r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return Mv[r]??e}function Nv(t,e){let r=t.trim();if(r)return e.securityLevel!=="loose"?(0,pm.sanitizeUrl)(r):r}var Rv=(t,...e)=>{let r=t.split("."),i=r.length-1,n=r[i],o=window;for(let a=0;a{r+=vm(n,e),e=n});let i=r/2;return Dl(t,i)}function $v(t){return t.length===1?t[0]:Pv(t)}var Zd=(t,e=2)=>{let r=Math.pow(10,e);return Math.round(t*r)/r},Dl=(t,e)=>{let r,i=e;for(let n of t){if(r){let o=vm(n,r);if(o=1)return{x:n.x,y:n.y};if(a>0&&a<1)return{x:Zd((1-a)*r.x+a*n.x,5),y:Zd((1-a)*r.y+a*n.y,5)}}}r=n}throw new Error("Could not find a suitable point for the given distance")},zv=(t,e,r)=>{Y.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());let n=Dl(e,25),o=t?10:5,a=Math.atan2(e[0].y-n.y,e[0].x-n.x),s={x:0,y:0};return s.x=Math.sin(a)*o+(e[0].x+n.x)/2,s.y=-Math.cos(a)*o+(e[0].y+n.y)/2,s};function qv(t,e,r){let i=structuredClone(r);Y.info("our points",i),e!=="start_left"&&e!=="start_right"&&i.reverse();let n=25+t,o=Dl(i,n),a=10+t*.5,s=Math.atan2(i[0].y-o.y,i[0].x-o.x),l={x:0,y:0};return e==="start_left"?(l.x=Math.sin(s+Math.PI)*a+(i[0].x+o.x)/2,l.y=-Math.cos(s+Math.PI)*a+(i[0].y+o.y)/2):e==="end_right"?(l.x=Math.sin(s-Math.PI)*a+(i[0].x+o.x)/2-5,l.y=-Math.cos(s-Math.PI)*a+(i[0].y+o.y)/2-5):e==="end_left"?(l.x=Math.sin(s)*a+(i[0].x+o.x)/2-5,l.y=-Math.cos(s)*a+(i[0].y+o.y)/2-5):(l.x=Math.sin(s)*a+(i[0].x+o.x)/2,l.y=-Math.cos(s)*a+(i[0].y+o.y)/2),l}function Wv(t){let e="",r="";for(let i of t)i!==void 0&&(i.startsWith("color:")||i.startsWith("text-align:")?r=r+i+";":e=e+i+";");return{style:e,labelStyle:r}}var Qd=0,Uv=()=>(Qd++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Qd);function Hv(t){let e="",r="0123456789abcdef",i=r.length;for(let n=0;nHv(t.length),jv=function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},Gv=function(t,e){let r=e.text.replace(Il.lineBreakRegex," "),[,i]=Rl(e.fontSize),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.style("text-anchor",e.anchor),n.style("font-family",e.fontFamily),n.style("font-size",i),n.style("font-weight",e.fontWeight),n.attr("fill",e.fill),e.class!==void 0&&n.attr("class",e.class);let o=n.append("tspan");return o.attr("x",e.x+e.textMargin*2),o.attr("fill",e.fill),o.text(r),n},Vv=Mo((t,e,r)=>{if(!t||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},r),Il.lineBreakRegex.test(t)))return t;let i=t.split(" "),n=[],o="";return i.forEach((a,s)=>{let l=na(`${a} `,r),c=na(o,r);if(l>e){let{hyphenatedStrings:f,remainingWord:p}=Xv(a,e,"-",r);n.push(o,...f),o=p}else c+l>=e?(n.push(o),o=a):o=[o,a].filter(Boolean).join(" ");s+1===i.length&&n.push(o)}),n.filter(a=>a!=="").join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),Xv=Mo((t,e,r="-",i)=>{i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},i);let n=[...t],o=[],a="";return n.forEach((s,l)=>{let c=`${a}${s}`;if(na(c,i)>=e){let h=l+1,f=n.length===h,p=`${c}${r}`;o.push(f?c:p),a=""}else a=c}),{hyphenatedStrings:o,remainingWord:a}},(t,e,r="-",i)=>`${t}${e}${r}${i.fontSize}${i.fontWeight}${i.fontFamily}`);function Kv(t,e){return Nl(t,e).height}function na(t,e){return Nl(t,e).width}var Nl=Mo((t,e)=>{let{fontSize:r=12,fontFamily:i="Arial",fontWeight:n=400}=e;if(!t)return{width:0,height:0};let[,o]=Rl(r),a=["sans-serif",i],s=t.split(Il.lineBreakRegex),l=[],c=Wt("body");if(!c.remove)return{width:0,height:0,lineHeight:0};let u=c.append("svg");for(let f of a){let p=0,x={width:0,height:0,lineHeight:0};for(let b of s){let T=jv();T.text=b||Av;let B=Gv(u,T).style("font-size",o).style("font-weight",n).style("font-family",f),v=(B._groups||B)[0][0].getBBox();if(v.width===0&&v.height===0)throw new Error("svg element not in render tree");x.width=Math.round(Math.max(x.width,v.width)),p=Math.round(v.height),x.height+=p,x.lineHeight=Math.round(Math.max(x.lineHeight,p))}l.push(x)}u.remove();let h=isNaN(l[1].height)||isNaN(l[1].width)||isNaN(l[1].lineHeight)||l[0].height>l[1].height&&l[0].width>l[1].width&&l[0].lineHeight>l[1].lineHeight?0:1;return l[h]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),Al=class{constructor(e=!1,r){this.count=0,this.count=r?r.length:0,this.next=e?()=>this.count++:()=>Date.now()}},ta,Zv=function(t){return ta=ta||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),ta.innerHTML=t,unescape(ta.textContent)};function Sm(t){return"str"in t}var Qv=(t,e,r,i)=>{var n;if(!i)return;let o=(n=t.node())==null?void 0:n.getBBox();o&&t.append("text").text(i).attr("x",o.x+o.width/2).attr("y",-r).attr("class",e)},Rl=t=>{if(typeof t=="number")return[t,t+"px"];let e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]};function km(t,e){return Sd({},t,e)}var fn={assignWithDepth:Dt,wrapLabel:Vv,calculateTextHeight:Kv,calculateTextWidth:na,calculateTextDimensions:Nl,cleanAndMerge:km,detectInit:Ev,detectDirective:Tm,isSubstringInArray:Iv,interpolateToCurve:Dv,calcLabelPosition:$v,calcCardinalityPosition:zv,calcTerminalLabelPosition:qv,formatUrl:Nv,getStylesFromArray:Wv,generateId:Uv,random:Yv,runFunc:Rv,entityDecode:Zv,insertTitle:Qv,parseFontSize:Rl,InitIDGenerator:Al},Jd="10.5.1",gn=Object.freeze(kv),Yt=Dt({},gn),wm,Ti=[],pn=Dt({},gn),xa=(t,e)=>{let r=Dt({},t),i={};for(let n of e)Fm(n),i=Dt(i,n);if(r=Dt(r,i),i.theme&&i.theme in Oe){let n=Dt({},wm),o=Dt(n.themeVariables||{},i.themeVariables);r.theme&&r.theme in Oe&&(r.themeVariables=Oe[r.theme].getThemeVariables(o))}return pn=r,Am(pn),pn},Jv=t=>(Yt=Dt({},gn),Yt=Dt(Yt,t),t.theme&&Oe[t.theme]&&(Yt.themeVariables=Oe[t.theme].getThemeVariables(t.themeVariables)),xa(Yt,Ti),Yt),tS=t=>{wm=Dt({},t)},eS=t=>(Yt=Dt(Yt,t),xa(Yt,Ti),Yt),Bm=()=>Dt({},Yt),rS=t=>(Am(t),Dt(pn,t),se()),se=()=>Dt({},pn),Fm=t=>{t&&(["secure",...Yt.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(Y.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{typeof t[e]=="string"&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],typeof t[e]=="object"&&Fm(t[e])}))},iS=t=>{ra(t),t.fontFamily&&(!t.themeVariables||!t.themeVariables.fontFamily)&&(t.themeVariables={fontFamily:t.fontFamily}),Ti.push(t),xa(Yt,Ti)},oa=(t=Yt)=>{Ti=[],xa(t,Ti)},nS={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},tm={},oS=t=>{tm[t]||(Y.warn(nS[t]),tm[t]=!0)},Am=t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&oS("LAZY_LOAD_DEPRECATED")},Mm="c4",aS=t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),sS=async()=>{let{diagram:t}=await import("./c4Diagram-7e558229-ESOFQEAK.min.js");return{id:Mm,diagram:t}},lS={id:Mm,detector:aS,loader:sS},cS=lS,Lm="flowchart",uS=(t,e)=>{var r,i;return((r=e?.flowchart)==null?void 0:r.defaultRenderer)==="dagre-wrapper"||((i=e?.flowchart)==null?void 0:i.defaultRenderer)==="elk"?!1:/^\s*graph/.test(t)},hS=async()=>{let{diagram:t}=await import("./flowDiagram-90a5ee23-PJVUCMCX.min.js");return{id:Lm,diagram:t}},fS={id:Lm,detector:uS,loader:hS},pS=fS,Em="flowchart-v2",dS=(t,e)=>{var r,i,n;return((r=e?.flowchart)==null?void 0:r.defaultRenderer)==="dagre-d3"||((i=e?.flowchart)==null?void 0:i.defaultRenderer)==="elk"?!1:/^\s*graph/.test(t)&&((n=e?.flowchart)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)},mS=async()=>{let{diagram:t}=await import("./flowDiagram-v2-eab222bb-OKHX3OBW.min.js");return{id:Em,diagram:t}},gS={id:Em,detector:dS,loader:mS},xS=gS,Om="er",yS=t=>/^\s*erDiagram/.test(t),_S=async()=>{let{diagram:t}=await import("./erDiagram-5b6cebf0-ET7JKQLO.min.js");return{id:Om,diagram:t}},bS={id:Om,detector:yS,loader:_S},CS=bS,Im="gitGraph",TS=t=>/^\s*gitGraph/.test(t),vS=async()=>{let{diagram:t}=await import("./gitGraphDiagram-7b32de06-HSQEFH3J.min.js");return{id:Im,diagram:t}},SS={id:Im,detector:TS,loader:vS},kS=SS,Dm="gantt",wS=t=>/^\s*gantt/.test(t),BS=async()=>{let{diagram:t}=await import("./ganttDiagram-9d6d9e54-2ZUR6K6X.min.js");return{id:Dm,diagram:t}},FS={id:Dm,detector:wS,loader:BS},AS=FS,Nm="info",MS=t=>/^\s*info/.test(t),LS=async()=>{let{diagram:t}=await import("./infoDiagram-645befec-LJX5B3TX.min.js");return{id:Nm,diagram:t}},ES={id:Nm,detector:MS,loader:LS},Rm="pie",OS=t=>/^\s*pie/.test(t),IS=async()=>{let{diagram:t}=await import("./pieDiagram-47467502-FQNQ6D3F.min.js");return{id:Rm,diagram:t}},DS={id:Rm,detector:OS,loader:IS},Pm="quadrantChart",NS=t=>/^\s*quadrantChart/.test(t),RS=async()=>{let{diagram:t}=await import("./quadrantDiagram-3646f1b7-ZGVWP3GK.min.js");return{id:Pm,diagram:t}},PS={id:Pm,detector:NS,loader:RS},$S=PS,$m="requirement",zS=t=>/^\s*requirement(Diagram)?/.test(t),qS=async()=>{let{diagram:t}=await import("./requirementDiagram-cc8b2f2f-LAQPU6OO.min.js");return{id:$m,diagram:t}},WS={id:$m,detector:zS,loader:qS},US=WS,zm="sequence",HS=t=>/^\s*sequenceDiagram/.test(t),YS=async()=>{let{diagram:t}=await import("./sequenceDiagram-ccb4d521-4WVPNKGJ.min.js");return{id:zm,diagram:t}},jS={id:zm,detector:HS,loader:YS},GS=jS,qm="class",VS=(t,e)=>{var r;return((r=e?.class)==null?void 0:r.defaultRenderer)==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t)},XS=async()=>{let{diagram:t}=await import("./classDiagram-bfe30095-CGDYITKI.min.js");return{id:qm,diagram:t}},KS={id:qm,detector:VS,loader:XS},ZS=KS,Wm="classDiagram",QS=(t,e)=>{var r;return/^\s*classDiagram/.test(t)&&((r=e?.class)==null?void 0:r.defaultRenderer)==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t)},JS=async()=>{let{diagram:t}=await import("./classDiagram-v2-3a55c922-LPBFVDSW.min.js");return{id:Wm,diagram:t}},tk={id:Wm,detector:QS,loader:JS},ek=tk,Um="state",rk=(t,e)=>{var r;return((r=e?.state)==null?void 0:r.defaultRenderer)==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t)},ik=async()=>{let{diagram:t}=await import("./stateDiagram-dac17514-SIWOKT2P.min.js");return{id:Um,diagram:t}},nk={id:Um,detector:rk,loader:ik},ok=nk,Hm="stateDiagram",ak=(t,e)=>{var r;return!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&((r=e?.state)==null?void 0:r.defaultRenderer)==="dagre-wrapper")},sk=async()=>{let{diagram:t}=await import("./stateDiagram-v2-0255b0b2-QWZSEGAH.min.js");return{id:Hm,diagram:t}},lk={id:Hm,detector:ak,loader:sk},ck=lk,Ym="journey",uk=t=>/^\s*journey/.test(t),hk=async()=>{let{diagram:t}=await import("./journeyDiagram-14f1468f-ZPJCRBWY.min.js");return{id:Ym,diagram:t}},fk={id:Ym,detector:uk,loader:hk},pk=fk,dk=t=>{var e;let{securityLevel:r}=se(),i=Wt("body");if(r==="sandbox"){let a=((e=Wt(`#i${t}`).node())==null?void 0:e.contentDocument)??document;i=Wt(a.body)}return i.select(`#${t}`)},mk=function(t,e){for(let r of e)t.attr(r[0],r[1])},gk=function(t,e,r){let i=new Map;return r?(i.set("width","100%"),i.set("style",`max-width: ${e}px;`)):(i.set("height",t),i.set("width",e)),i},jm=function(t,e,r,i){let n=gk(e,r,i);mk(t,n)},xk=function(t,e,r,i){let n=e.node().getBBox(),o=n.width,a=n.height;Y.info(`SVG bounds: ${o}x${a}`,n);let s=0,l=0;Y.info(`Graph bounds: ${s}x${l}`,t),s=o+r*2,l=a+r*2,Y.info(`Calculated bounds: ${s}x${l}`),jm(e,l,s,i);let c=`${n.x-r} ${n.y-r} ${n.width+2*r} ${n.height+2*r}`;e.attr("viewBox",c)},yk=(t,e,r)=>{Y.debug(`renering svg for syntax error +`);let i=dk(e);i.attr("viewBox","0 0 2412 512"),jm(i,100,512,!0);let n=i.append("g");n.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),n.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),n.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),n.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),n.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),n.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),n.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),n.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},Gm={draw:yk},_k=Gm,bk={db:{},renderer:Gm,parser:{parser:{yy:{}},parse:()=>{}}},Ck=bk,Vm="flowchart-elk",Tk=(t,e)=>{var r;return!!(/^\s*flowchart-elk/.test(t)||/^\s*flowchart|graph/.test(t)&&((r=e?.flowchart)==null?void 0:r.defaultRenderer)==="elk")},vk=async()=>{let{diagram:t}=await import("./flowchart-elk-definition-4ac3371a-MJHTACDF.min.js");return{id:Vm,diagram:t}},Sk={id:Vm,detector:Tk,loader:vk},kk=Sk,Xm="timeline",wk=t=>/^\s*timeline/.test(t),Bk=async()=>{let{diagram:t}=await import("./timeline-definition-2815a264-R5TQVDSB.min.js");return{id:Xm,diagram:t}},Fk={id:Xm,detector:wk,loader:Bk},Ak=Fk,Km="mindmap",Mk=t=>/^\s*mindmap/.test(t),Lk=async()=>{let{diagram:t}=await import("./mindmap-definition-9a80f489-ZFI7QWPM.min.js");return{id:Km,diagram:t}},Ek={id:Km,detector:Mk,loader:Lk},Ok=Ek,Zm="sankey",Ik=t=>/^\s*sankey-beta/.test(t),Dk=async()=>{let{diagram:t}=await import("./sankeyDiagram-31fcfff2-K2FETSDB.min.js");return{id:Zm,diagram:t}},Nk={id:Zm,detector:Ik,loader:Dk},Rk=Nk,ea={},Pk=(t,e,r)=>{let i="";return t in ea&&ea[t]?i=ea[t](r):Y.warn(`No theme found for ${t}`),` & { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + fill: ${r.textColor} + } + + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${r.errorBkgColor}; + } + & .error-text { + fill: ${r.errorTextColor}; + stroke: ${r.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 2px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${r.lineColor}; + stroke: ${r.lineColor}; + } + & .marker.cross { + stroke: ${r.lineColor}; + } + + & svg { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + } + + ${i} + + ${e} +`},$k=(t,e)=>{e!==void 0&&(ea[t]=e)},zk=Pk,Pl="",$l="",zl="",ql=t=>mn(t,se()),qk=()=>{Pl="",zl="",$l=""},Wk=t=>{Pl=ql(t).replace(/^\s+/g,"")},Uk=()=>Pl,Hk=t=>{zl=ql(t).replace(/\n\s+/g,` +`)},Yk=()=>zl,jk=t=>{$l=ql(t)},Gk=()=>$l,Vk=Object.freeze(Object.defineProperty({__proto__:null,clear:qk,getAccDescription:Yk,getAccTitle:Uk,getDiagramTitle:Gk,setAccDescription:Hk,setAccTitle:Wk,setDiagramTitle:jk},Symbol.toStringTag,{value:"Module"})),Xk=Y,Kk=Ol,Qm=se,Zk=t=>mn(t,Qm()),Qk=xk,Jk=()=>Vk,aa={},sa=(t,e,r)=>{var i;if(aa[t])throw new Error(`Diagram ${t} already registered.`);aa[t]=e,r&&Cm(t,r),$k(t,e.styles),(i=e.injectUtils)==null||i.call(e,Xk,Kk,Qm,Zk,Qk,Jk(),()=>{})},Wl=t=>{if(t in aa)return aa[t];throw new Ml(t)},Ml=class extends Error{constructor(e){super(`Diagram ${e} not found.`)}},em=!1,Ul=()=>{em||(em=!0,sa("error",Ck,t=>t.toLowerCase().trim()==="error"),sa("---",{db:{clear:()=>{}},styles:{},renderer:{draw:()=>{}},parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")}},init:()=>null},t=>t.toLowerCase().trimStart().startsWith("---")),bm(cS,ek,ZS,CS,AS,ES,DS,US,GS,kk,xS,pS,Ok,Ak,kS,ck,ok,pk,$S,Rk))},la=class{constructor(e,r={}){this.text=e,this.metadata=r,this.type="graph",this.text+=` +`;let i=se();try{this.type=ga(e,i)}catch(o){this.type="error",this.detectError=o}let n=Wl(this.type);Y.debug("Type "+this.type),this.db=n.db,this.renderer=n.renderer,this.parser=n.parser,this.parser.parser.yy=this.db,this.init=n.init,this.parse()}parse(){var e,r,i,n,o;if(this.detectError)throw this.detectError;(r=(e=this.db).clear)==null||r.call(e);let a=se();(i=this.init)==null||i.call(this,a),this.metadata.title&&((o=(n=this.db).setDiagramTitle)==null||o.call(n,this.metadata.title)),this.parser.parse(this.text)}async render(e,r){await this.renderer.draw(this.text,e,r,this)}getParser(){return this.parser}getType(){return this.type}},Hl=async(t,e={})=>{let r=ga(t,se());try{Wl(r)}catch{let n=Fv(r);if(!n)throw new ia(`Diagram ${r} not found.`);let{id:o,diagram:a}=await n();sa(o,a)}return new la(t,e)},Ll=[],$z=t=>{Ll.push(t)},tw=()=>{Ll.forEach(t=>{t()}),Ll=[]},ew="graphics-document document";function rw(t,e){t.attr("role",ew),e!==""&&t.attr("aria-roledescription",e)}function iw(t,e,r,i){if(t.insert!==void 0){if(r){let n=`chart-desc-${i}`;t.attr("aria-describedby",n),t.insert("desc",":first-child").attr("id",n).text(r)}if(e){let n=`chart-title-${i}`;t.attr("aria-labelledby",n),t.insert("title",":first-child").attr("id",n).text(e)}}}var nw=t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart();function Jm(t){return typeof t>"u"||t===null}function ow(t){return typeof t=="object"&&t!==null}function aw(t){return Array.isArray(t)?t:Jm(t)?[]:[t]}function sw(t,e){var r,i,n,o;if(e)for(o=Object.keys(e),r=0,i=o.length;rs&&(o=" ... ",e=i-s+o.length),r-i>s&&(a=" ...",r=i+s-a.length),{str:o+t.slice(e,r).replace(/\t/g,"\u2192")+a,pos:i-e+o.length}}function vl(t,e){return zt.repeat(" ",e-t.length)+t}function gw(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!="number"&&(e.indent=1),typeof e.linesBefore!="number"&&(e.linesBefore=3),typeof e.linesAfter!="number"&&(e.linesAfter=2);for(var r=/\r?\n|\r|\0/g,i=[0],n=[],o,a=-1;o=r.exec(t.buffer);)n.push(o.index),i.push(o.index+o[0].length),t.position<=o.index&&a<0&&(a=i.length-2);a<0&&(a=i.length-1);var s="",l,c,u=Math.min(t.line+e.linesAfter,n.length).toString().length,h=e.maxLength-(e.indent+u+3);for(l=1;l<=e.linesBefore&&!(a-l<0);l++)c=Tl(t.buffer,i[a-l],n[a-l],t.position-(i[a]-i[a-l]),h),s=zt.repeat(" ",e.indent)+vl((t.line-l+1).toString(),u)+" | "+c.str+` +`+s;for(c=Tl(t.buffer,i[a],n[a],t.position,h),s+=zt.repeat(" ",e.indent)+vl((t.line+1).toString(),u)+" | "+c.str+` +`,s+=zt.repeat("-",e.indent+u+3+c.pos)+`^ +`,l=1;l<=e.linesAfter&&!(a+l>=n.length);l++)c=Tl(t.buffer,i[a+l],n[a+l],t.position-(i[a]-i[a+l]),h),s+=zt.repeat(" ",e.indent)+vl((t.line+l+1).toString(),u)+" | "+c.str+` +`;return s.replace(/\n$/,"")}var xw=gw,yw=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],_w=["scalar","sequence","mapping"];function bw(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(i){e[String(i)]=r})}),e}function Cw(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(yw.indexOf(r)===-1)throw new Ee('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=bw(e.styleAliases||null),_w.indexOf(this.kind)===-1)throw new Ee('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var Nt=Cw;function rm(t,e){var r=[];return t[e].forEach(function(i){var n=r.length;r.forEach(function(o,a){o.tag===i.tag&&o.kind===i.kind&&o.multi===i.multi&&(n=a)}),r[n]=i}),r}function Tw(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},e,r;function i(n){n.multi?(t.multi[n.kind].push(n),t.multi.fallback.push(n)):t[n.kind][n.tag]=t.fallback[n.tag]=n}for(e=0,r=arguments.length;e=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Uw=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Hw(t){return!(t===null||!Uw.test(t)||t[t.length-1]==="_")}function Yw(t){var e,r;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:r*parseFloat(e,10)}var jw=/^[-+]?[0-9]+e/;function Gw(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(zt.isNegativeZero(t))return"-0.0";return r=t.toString(10),jw.test(r)?r.replace("e",".e"):r}function Vw(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||zt.isNegativeZero(t))}var Xw=new Nt("tag:yaml.org,2002:float",{kind:"scalar",resolve:Hw,construct:Yw,predicate:Vw,represent:Gw,defaultStyle:"lowercase"}),eg=Bw.extend({implicit:[Lw,Dw,Ww,Xw]}),Kw=eg,rg=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),ig=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function Zw(t){return t===null?!1:rg.exec(t)!==null||ig.exec(t)!==null}function Qw(t){var e,r,i,n,o,a,s,l=0,c=null,u,h,f;if(e=rg.exec(t),e===null&&(e=ig.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(r,i,n));if(o=+e[4],a=+e[5],s=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],h=+(e[11]||0),c=(u*60+h)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(r,i,n,o,a,s,l)),c&&f.setTime(f.getTime()-c),f}function Jw(t){return t.toISOString()}var tB=new Nt("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:Zw,construct:Qw,instanceOf:Date,represent:Jw});function eB(t){return t==="<<"||t===null}var rB=new Nt("tag:yaml.org,2002:merge",{kind:"scalar",resolve:eB}),Yl=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function iB(t){if(t===null)return!1;var e,r,i=0,n=t.length,o=Yl;for(r=0;r64)){if(e<0)return!1;i+=6}return i%8===0}function nB(t){var e,r,i=t.replace(/[\r\n=]/g,""),n=i.length,o=Yl,a=0,s=[];for(e=0;e>16&255),s.push(a>>8&255),s.push(a&255)),a=a<<6|o.indexOf(i.charAt(e));return r=n%4*6,r===0?(s.push(a>>16&255),s.push(a>>8&255),s.push(a&255)):r===18?(s.push(a>>10&255),s.push(a>>2&255)):r===12&&s.push(a>>4&255),new Uint8Array(s)}function oB(t){var e="",r=0,i,n,o=t.length,a=Yl;for(i=0;i>18&63],e+=a[r>>12&63],e+=a[r>>6&63],e+=a[r&63]),r=(r<<8)+t[i];return n=o%3,n===0?(e+=a[r>>18&63],e+=a[r>>12&63],e+=a[r>>6&63],e+=a[r&63]):n===2?(e+=a[r>>10&63],e+=a[r>>4&63],e+=a[r<<2&63],e+=a[64]):n===1&&(e+=a[r>>2&63],e+=a[r<<4&63],e+=a[64],e+=a[64]),e}function aB(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}var sB=new Nt("tag:yaml.org,2002:binary",{kind:"scalar",resolve:iB,construct:nB,predicate:aB,represent:oB}),lB=Object.prototype.hasOwnProperty,cB=Object.prototype.toString;function uB(t){if(t===null)return!0;var e=[],r,i,n,o,a,s=t;for(r=0,i=s.length;r>10)+55296,(t-65536&1023)+56320)}var lg=new Array(256),cg=new Array(256);for(Mr=0;Mr<256;Mr++)lg[Mr]=om(Mr)?1:0,cg[Mr]=om(Mr);var Mr;function MB(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||CB,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function ug(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=xw(r),new Ee(e,r)}function U(t,e){throw ug(t,e)}function ha(t,e){t.onWarning&&t.onWarning.call(null,ug(t,e))}var am={YAML:function(e,r,i){var n,o,a;e.version!==null&&U(e,"duplication of %YAML directive"),i.length!==1&&U(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&U(e,"ill-formed argument of the YAML directive"),o=parseInt(n[1],10),a=parseInt(n[2],10),o!==1&&U(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=a<2,a!==1&&a!==2&&ha(e,"unsupported YAML version of the document")},TAG:function(e,r,i){var n,o;i.length!==2&&U(e,"TAG directive accepts exactly two arguments"),n=i[0],o=i[1],ag.test(n)||U(e,"ill-formed tag handle (first argument) of the TAG directive"),tr.call(e.tagMap,n)&&U(e,'there is a previously declared suffix for "'+n+'" tag handle'),sg.test(o)||U(e,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch{U(e,"tag prefix is malformed: "+o)}e.tagMap[n]=o}};function Je(t,e,r,i){var n,o,a,s;if(e1&&(t.result+=zt.repeat(` +`,e-1))}function LB(t,e,r){var i,n,o,a,s,l,c,u,h=t.kind,f=t.result,p;if(p=t.input.charCodeAt(t.position),jt(p)||_i(p)||p===35||p===38||p===42||p===33||p===124||p===62||p===39||p===34||p===37||p===64||p===96||(p===63||p===45)&&(n=t.input.charCodeAt(t.position+1),jt(n)||r&&_i(n)))return!1;for(t.kind="scalar",t.result="",o=a=t.position,s=!1;p!==0;){if(p===58){if(n=t.input.charCodeAt(t.position+1),jt(n)||r&&_i(n))break}else if(p===35){if(i=t.input.charCodeAt(t.position-1),jt(i))break}else{if(t.position===t.lineStart&&ya(t)||r&&_i(p))break;if(xe(p))if(l=t.line,c=t.lineStart,u=t.lineIndent,mt(t,!1,-1),t.lineIndent>=e){s=!0,p=t.input.charCodeAt(t.position);continue}else{t.position=a,t.line=l,t.lineStart=c,t.lineIndent=u;break}}s&&(Je(t,o,a,!1),Gl(t,t.line-l),o=a=t.position,s=!1),Lr(p)||(a=t.position+1),p=t.input.charCodeAt(++t.position)}return Je(t,o,a,!1),t.result?!0:(t.kind=h,t.result=f,!1)}function EB(t,e){var r,i,n;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,i=n=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(Je(t,i,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)i=t.position,t.position++,n=t.position;else return!0;else xe(r)?(Je(t,i,n,!0),Gl(t,mt(t,!1,e)),i=n=t.position):t.position===t.lineStart&&ya(t)?U(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);U(t,"unexpected end of the stream within a single quoted scalar")}function OB(t,e){var r,i,n,o,a,s;if(s=t.input.charCodeAt(t.position),s!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;(s=t.input.charCodeAt(t.position))!==0;){if(s===34)return Je(t,r,t.position,!0),t.position++,!0;if(s===92){if(Je(t,r,t.position,!0),s=t.input.charCodeAt(++t.position),xe(s))mt(t,!1,e);else if(s<256&&lg[s])t.result+=cg[s],t.position++;else if((a=BB(s))>0){for(n=a,o=0;n>0;n--)s=t.input.charCodeAt(++t.position),(a=wB(s))>=0?o=(o<<4)+a:U(t,"expected hexadecimal character");t.result+=AB(o),t.position++}else U(t,"unknown escape sequence");r=i=t.position}else xe(s)?(Je(t,r,i,!0),Gl(t,mt(t,!1,e)),r=i=t.position):t.position===t.lineStart&&ya(t)?U(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}U(t,"unexpected end of the stream within a double quoted scalar")}function IB(t,e){var r=!0,i,n,o,a=t.tag,s,l=t.anchor,c,u,h,f,p,x=Object.create(null),b,T,B,v;if(v=t.input.charCodeAt(t.position),v===91)u=93,p=!1,s=[];else if(v===123)u=125,p=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),v=t.input.charCodeAt(++t.position);v!==0;){if(mt(t,!0,e),v=t.input.charCodeAt(t.position),v===u)return t.position++,t.tag=a,t.anchor=l,t.kind=p?"mapping":"sequence",t.result=s,!0;r?v===44&&U(t,"expected the node content, but found ','"):U(t,"missed comma between flow collection entries"),T=b=B=null,h=f=!1,v===63&&(c=t.input.charCodeAt(t.position+1),jt(c)&&(h=f=!0,t.position++,mt(t,!0,e))),i=t.line,n=t.lineStart,o=t.position,vi(t,e,ca,!1,!0),T=t.tag,b=t.result,mt(t,!0,e),v=t.input.charCodeAt(t.position),(f||t.line===i)&&v===58&&(h=!0,v=t.input.charCodeAt(++t.position),mt(t,!0,e),vi(t,e,ca,!1,!0),B=t.result),p?bi(t,s,x,T,b,B,i,n,o):h?s.push(bi(t,null,x,T,b,B,i,n,o)):s.push(b),mt(t,!0,e),v=t.input.charCodeAt(t.position),v===44?(r=!0,v=t.input.charCodeAt(++t.position)):r=!1}U(t,"unexpected end of the stream within a flow collection")}function DB(t,e){var r,i,n=Sl,o=!1,a=!1,s=e,l=0,c=!1,u,h;if(h=t.input.charCodeAt(t.position),h===124)i=!1;else if(h===62)i=!0;else return!1;for(t.kind="scalar",t.result="";h!==0;)if(h=t.input.charCodeAt(++t.position),h===43||h===45)Sl===n?n=h===43?im:TB:U(t,"repeat of a chomping mode identifier");else if((u=FB(h))>=0)u===0?U(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):a?U(t,"repeat of an indentation width identifier"):(s=e+u-1,a=!0);else break;if(Lr(h)){do h=t.input.charCodeAt(++t.position);while(Lr(h));if(h===35)do h=t.input.charCodeAt(++t.position);while(!xe(h)&&h!==0)}for(;h!==0;){for(jl(t),t.lineIndent=0,h=t.input.charCodeAt(t.position);(!a||t.lineIndents&&(s=t.lineIndent),xe(h)){l++;continue}if(t.lineIndente)&&l!==0)U(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(T&&(a=t.line,s=t.lineStart,l=t.position),vi(t,e,ua,!0,n)&&(T?x=t.result:b=t.result),T||(bi(t,h,f,p,x,b,a,s,l),p=x=b=null),mt(t,!0,-1),v=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>e)&&v!==0)U(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),h=0,f=t.implicitTypes.length;h"),t.result!==null&&x.kind!==t.kind&&U(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+x.kind+'", not "'+t.kind+'"'),x.resolve(t.result,t.tag)?(t.result=x.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):U(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||u}function zB(t){var e=t.position,r,i,n,o=!1,a;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(a=t.input.charCodeAt(t.position))!==0&&(mt(t,!0,-1),a=t.input.charCodeAt(t.position),!(t.lineIndent>0||a!==37));){for(o=!0,a=t.input.charCodeAt(++t.position),r=t.position;a!==0&&!jt(a);)a=t.input.charCodeAt(++t.position);for(i=t.input.slice(r,t.position),n=[],i.length<1&&U(t,"directive name must not be less than one character in length");a!==0;){for(;Lr(a);)a=t.input.charCodeAt(++t.position);if(a===35){do a=t.input.charCodeAt(++t.position);while(a!==0&&!xe(a));break}if(xe(a))break;for(r=t.position;a!==0&&!jt(a);)a=t.input.charCodeAt(++t.position);n.push(t.input.slice(r,t.position))}a!==0&&jl(t),tr.call(am,i)?am[i](t,i,n):ha(t,'unknown document directive "'+i+'"')}if(mt(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,mt(t,!0,-1)):o&&U(t,"directives end mark is expected"),vi(t,t.lineIndent-1,ua,!1,!0),mt(t,!0,-1),t.checkLineBreaks&&SB.test(t.input.slice(e,t.position))&&ha(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&ya(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,mt(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var i=hg(t,r);if(typeof e!="function")return i;for(var n=0,o=i.length;nt.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(e,r,i)=>"<"+r+i.replace(/="([^"]*)"/g,"='$1'")+">"),KB=t=>{let{text:e,metadata:r}=VB(t),{displayMode:i,title:n,config:o={}}=r;return i&&(o.gantt||(o.gantt={}),o.gantt.displayMode=i),{title:n,config:o,text:e}},ZB=t=>{let e=fn.detectInit(t)??{},r=fn.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:i})=>{}):r?.type==="wrap"&&(e.wrap=!0),{text:Ov(t),directive:e}};function QB(t){let e=XB(t),r=KB(e),i=ZB(r.text),n=km(r.config,i.directive);return t=nw(i.text),{code:t,title:r.title,config:n}}var JB=5e4,tF="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",eF="sandbox",rF="loose",iF="http://www.w3.org/2000/svg",nF="http://www.w3.org/1999/xlink",oF="http://www.w3.org/1999/xhtml",aF="100%",sF="100%",lF="border:0;margin:0;",cF="margin:0",uF="allow-top-navigation-by-user-activation allow-popups",hF='The "iframe" tag is not supported by your browser.',fF=["foreignobject"],pF=["dominant-baseline"];function fg(t){let e=QB(t);return oa(),iS(e.config??{}),e}async function dF(t,e){Ul(),t=fg(t).code;try{await Hl(t)}catch(r){if(e?.suppressErrors)return!1;throw r}return!0}var mF=function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/#\w+;/g,function(r){let i=r.substring(1,r.length-1);return/^\+?\d+$/.test(i)?"\uFB02\xB0\xB0"+i+"\xB6\xDF":"\uFB02\xB0"+i+"\xB6\xDF"}),e},gF=function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},cm=(t,e,r=[])=>` +.${t} ${e} { ${r.join(" !important; ")} !important; }`,xF=(t,e={})=>{var r;let i="";if(t.themeCSS!==void 0&&(i+=` +${t.themeCSS}`),t.fontFamily!==void 0&&(i+=` +:root { --mermaid-font-family: ${t.fontFamily}}`),t.altFontFamily!==void 0&&(i+=` +:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),!qo(e)){let s=t.htmlLabels||((r=t.flowchart)==null?void 0:r.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];for(let l in e){let c=e[l];qo(c.styles)||s.forEach(u=>{i+=cm(c.id,u,c.styles)}),qo(c.textStyles)||(i+=cm(c.id,"tspan",c.textStyles))}}return i},yF=(t,e,r,i)=>{let n=xF(t,r),o=zk(e,n,t.themeVariables);return Jo(Vd(`${i}{${o}}`),Xd)},_F=(t="",e,r)=>{let i=t;return!r&&!e&&(i=i.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),i=gF(i),i=i.replace(/
/g,"
"),i},bF=(t="",e)=>{var r,i;let n=(i=(r=e?.viewBox)==null?void 0:r.baseVal)!=null&&i.height?e.viewBox.baseVal.height+"px":sF,o=btoa(''+t+"");return``},um=(t,e,r,i,n)=>{let o=t.append("div");o.attr("id",r),i&&o.attr("style",i);let a=o.append("svg").attr("id",e).attr("width","100%").attr("xmlns",iF);return n&&a.attr("xmlns:xlink",n),a.append("g"),t};function hm(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}var CF=(t,e,r,i)=>{var n,o,a;(n=t.getElementById(e))==null||n.remove(),(o=t.getElementById(r))==null||o.remove(),(a=t.getElementById(i))==null||a.remove()},TF=async function(t,e,r){var i,n,o,a,s,l;Ul();let c=fg(e);e=c.code;let u=se();Y.debug(u),e.length>(u?.maxTextSize??JB)&&(e=tF);let h="#"+t,f="i"+t,p="#"+f,x="d"+t,b="#"+x,T=Wt("body"),B=u.securityLevel===eF,v=u.securityLevel===rF,M=u.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),B){let G=hm(Wt(r),f);T=Wt(G.nodes()[0].contentDocument.body),T.node().style.margin=0}else T=Wt(r);um(T,t,x,`font-family: ${M}`,nF)}else{if(CF(document,t,x,f),B){let G=hm(Wt("body"),f);T=Wt(G.nodes()[0].contentDocument.body),T.node().style.margin=0}else T=Wt("body");um(T,t,x)}e=mF(e);let E,I;try{E=await Hl(e,{title:c.title})}catch(G){E=new la("error"),I=G}let F=T.select(b).node(),y=E.type,$=F.firstChild,et=$.firstChild,rt=(n=(i=E.renderer).getClasses)==null?void 0:n.call(i,e,E),C=yF(u,y,rt,h),_=document.createElement("style");_.innerHTML=C,$.insertBefore(_,et);try{await E.renderer.draw(e,t,Jd,E)}catch(G){throw _k.draw(e,t,Jd),G}let g=T.select(`${b} svg`),w=(a=(o=E.db).getAccTitle)==null?void 0:a.call(o),A=(l=(s=E.db).getAccDescription)==null?void 0:l.call(s);SF(y,g,w,A),T.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",oF);let N=T.select(b).node().innerHTML;if(Y.debug("config.arrowMarkerAbsolute",u.arrowMarkerAbsolute),N=_F(N,B,gm(u.arrowMarkerAbsolute)),B){let G=T.select(b+" svg").node();N=bF(N,G)}else v||(N=dn.default.sanitize(N,{ADD_TAGS:fF,ADD_ATTR:pF}));if(tw(),I)throw I;let j=Wt(B?p:b).node();return j&&"remove"in j&&j.remove(),{svg:N,bindFunctions:E.db.bindFunctions}};function vF(t={}){var e;t?.fontFamily&&!((e=t.themeVariables)!=null&&e.fontFamily)&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),tS(t),t?.theme&&t.theme in Oe?t.themeVariables=Oe[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=Oe.default.getThemeVariables(t.themeVariables));let r=typeof t=="object"?Jv(t):Bm();Ol(r.logLevel),Ul()}function SF(t,e,r,i){rw(e,t),iw(e,r,i,e.attr("id"))}var Er=Object.freeze({render:TF,parse:dF,getDiagramFromText:Hl,initialize:vF,getConfig:se,setConfig:rS,getSiteConfig:Bm,updateSiteConfig:eS,reset:()=>{oa()},globalReset:()=>{oa(gn)},defaultConfig:gn});Ol(se().logLevel);oa(se());var kF=async()=>{Y.debug("Loading registered diagrams");let e=(await Promise.allSettled(Object.entries(Ci).map(async([r,{detector:i,loader:n}])=>{if(n)try{Wl(r)}catch{try{let{diagram:a,id:s}=await n();sa(s,a,i)}catch(a){throw Y.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete Ci[r],a}}}))).filter(r=>r.status==="rejected");if(e.length>0){Y.error(`Failed to load ${e.length} external diagrams`);for(let r of e)Y.error(r);throw new Error(`Failed to load ${e.length} external diagrams`)}},wF=(t,e,r)=>{Y.warn(t),Sm(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},pg=async function(t={querySelector:".mermaid"}){try{await BF(t)}catch(e){if(Sm(e)&&Y.error(e.str),ye.parseError&&ye.parseError(e),!t.suppressErrors)throw Y.error("Use the suppressErrors option to suppress these errors"),e}},BF=async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){let i=Er.getConfig();Y.debug(`${t?"":"No "}Callback function found`);let n;if(r)n=r;else if(e)n=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");Y.debug(`Found ${n.length} diagrams`),i?.startOnLoad!==void 0&&(Y.debug("Start On Load: "+i?.startOnLoad),Er.updateSiteConfig({startOnLoad:i?.startOnLoad}));let o=new fn.InitIDGenerator(i.deterministicIds,i.deterministicIDSeed),a,s=[];for(let l of Array.from(n)){Y.info("Rendering diagram: "+l.id);if(l.getAttribute("data-processed"))continue;l.setAttribute("data-processed","true");let c=`mermaid-${o.next()}`;a=l.innerHTML,a=yc(fn.entityDecode(a)).trim().replace(//gi,"
");let u=fn.detectInit(a);u&&Y.debug("Detected early reinit: ",u);try{let{svg:h,bindFunctions:f}=await xg(c,a,l);l.innerHTML=h,t&&await t(c),f&&f(l)}catch(h){wF(h,s,ye.parseError)}}if(s.length>0)throw s[0]},dg=function(t){Er.initialize(t)},FF=async function(t,e,r){Y.warn("mermaid.init is deprecated. Please use run instead."),t&&dg(t);let i={postRenderCallback:r,querySelector:".mermaid"};typeof e=="string"?i.querySelector=e:e&&(e instanceof HTMLElement?i.nodes=[e]:i.nodes=e),await pg(i)},AF=async(t,{lazyLoad:e=!0}={})=>{bm(...t),e===!1&&await kF()},mg=function(){if(ye.startOnLoad){let{startOnLoad:t}=Er.getConfig();t&&ye.run().catch(e=>Y.error("Mermaid failed to initialize",e))}};if(typeof document<"u"){window.addEventListener("load",mg,!1)}var MF=function(t){ye.parseError=t},fa=[],kl=!1,gg=async()=>{if(!kl){for(kl=!0;fa.length>0;){let t=fa.shift();if(t)try{await t()}catch(e){Y.error("Error executing queue",e)}}kl=!1}},LF=async(t,e)=>new Promise((r,i)=>{let n=()=>new Promise((o,a)=>{Er.parse(t,e).then(s=>{o(s),r(s)},s=>{var l;Y.error("Error parsing",s),(l=ye.parseError)==null||l.call(ye,s),a(s),i(s)})});fa.push(n),gg().catch(i)}),xg=(t,e,r)=>new Promise((i,n)=>{let o=()=>new Promise((a,s)=>{Er.render(t,e,r).then(l=>{a(l),i(l)},l=>{var c;Y.error("Error parsing",l),(c=ye.parseError)==null||c.call(ye,l),s(l),n(l)})});fa.push(o),gg().catch(n)}),ye={startOnLoad:!0,mermaidAPI:Er,parse:LF,render:xg,init:FF,run:pg,registerExternalDiagrams:AF,initialize:dg,parseError:void 0,contentLoaded:mg,setParseErrorHandler:MF,detectType:ga};export{yc as a,_c as b,bc as c,Cc as d,Tc as e,c0 as f,u0 as g,Wt as h,sx as i,Cx as j,f1 as k,us as l,vs as m,pr as n,de as o,Vr as p,Xr as q,ke as r,we as s,Kr as t,ch as u,uh as v,Re as w,hh as x,fh as y,Qr as z,Qn as A,$h as B,a_ as C,m_ as D,Hi as E,g_ as F,x_ as G,Rs as H,jf as I,Ue as J,B1 as K,Sr as L,z as M,H as N,pt as O,ai as P,oe as Q,Ut as R,si as S,He as T,on as U,Mo as V,Ep as W,pi as X,Ip as Y,$p as Z,gl as _,zp as $,qp as aa,Wp as ba,Eo as ca,Yp as da,ge as ea,kr as fa,wr as ga,Oo as ha,Ke as ia,Gp as ja,di as ka,Jp as la,ed as ma,_l as na,mi as oa,nd as pa,od as qa,Io as ra,sd as sa,Do as ta,No as ua,gd as va,xd as wa,bd as xa,Cd as ya,Td as za,Sd as Aa,wd as Ba,$o as Ca,Ed as Da,qo as Ea,Y as Fa,pa as Ga,mn as Ha,gm as Ia,Iz as Ja,Il as Ka,bv as La,kv as Ma,Dt as Na,Av as Oa,Dv as Pa,Wv as Qa,Uv as Ra,Yv as Sa,Vv as Ta,Kv as Ua,na as Va,Rl as Wa,km as Xa,fn as Ya,gn as Za,rS as _a,se as $a,dk as ab,jm as bb,xk as cb,qk as db,Wk as eb,Uk as fb,Hk as gb,Yk as hb,jk as ib,Gk as jb,Vk as kb,Qm as lb,Qk as mb,$z as nb,gF as ob,ye as pb}; +/*! Bundled license information: + +dompurify/dist/purify.js: + (*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE *) + +mermaid/dist/mermaid-485fd1a4.js: + (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *) + (*! Check if previously processed *) + (*! + * Wait for document loaded before starting the execution + *) +*/ +//# sourceMappingURL=chunk-DJFTDYIK.min.js.map diff --git a/public/chunk-DJFTDYIK.min.js.map b/public/chunk-DJFTDYIK.min.js.map new file mode 100644 index 0000000..c24bf64 --- /dev/null +++ b/public/chunk-DJFTDYIK.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/dayjs/dayjs.min.js", "../../node_modules/@braintree/sanitize-url/dist/index.js", "../../node_modules/dompurify/src/utils.js", "../../node_modules/dompurify/src/tags.js", "../../node_modules/dompurify/src/attrs.js", "../../node_modules/dompurify/src/regexp.js", "../../node_modules/dompurify/src/purify.js", "../../node_modules/ts-dedent/src/index.ts", "../../node_modules/d3-array/src/max.js", "../../node_modules/d3-array/src/min.js", "../../node_modules/d3-array/src/ascending.js", "../../node_modules/d3-array/src/descending.js", "../../node_modules/d3-array/src/bisector.js", "../../node_modules/d3-array/src/number.js", "../../node_modules/d3-array/src/bisect.js", "../../node_modules/internmap/src/index.js", "../../node_modules/d3-array/src/ticks.js", "../../node_modules/d3-axis/src/identity.js", "../../node_modules/d3-axis/src/axis.js", "../../node_modules/d3-selection/src/selector.js", "../../node_modules/d3-selection/src/selection/select.js", "../../node_modules/d3-selection/src/array.js", "../../node_modules/d3-selection/src/selectorAll.js", "../../node_modules/d3-selection/src/selection/selectAll.js", "../../node_modules/d3-selection/src/matcher.js", "../../node_modules/d3-selection/src/selection/selectChild.js", "../../node_modules/d3-selection/src/selection/selectChildren.js", "../../node_modules/d3-selection/src/selection/filter.js", "../../node_modules/d3-selection/src/selection/sparse.js", "../../node_modules/d3-selection/src/selection/enter.js", "../../node_modules/d3-selection/src/constant.js", "../../node_modules/d3-selection/src/selection/data.js", "../../node_modules/d3-selection/src/selection/exit.js", "../../node_modules/d3-selection/src/selection/join.js", "../../node_modules/d3-selection/src/selection/merge.js", "../../node_modules/d3-selection/src/selection/order.js", "../../node_modules/d3-selection/src/selection/sort.js", "../../node_modules/d3-selection/src/selection/call.js", "../../node_modules/d3-selection/src/selection/nodes.js", "../../node_modules/d3-selection/src/selection/node.js", "../../node_modules/d3-selection/src/selection/size.js", "../../node_modules/d3-selection/src/selection/empty.js", "../../node_modules/d3-selection/src/selection/each.js", "../../node_modules/d3-selection/src/namespaces.js", "../../node_modules/d3-selection/src/namespace.js", "../../node_modules/d3-selection/src/selection/attr.js", "../../node_modules/d3-selection/src/window.js", "../../node_modules/d3-selection/src/selection/style.js", "../../node_modules/d3-selection/src/selection/property.js", "../../node_modules/d3-selection/src/selection/classed.js", "../../node_modules/d3-selection/src/selection/text.js", "../../node_modules/d3-selection/src/selection/html.js", "../../node_modules/d3-selection/src/selection/raise.js", "../../node_modules/d3-selection/src/selection/lower.js", "../../node_modules/d3-selection/src/creator.js", "../../node_modules/d3-selection/src/selection/append.js", "../../node_modules/d3-selection/src/selection/insert.js", "../../node_modules/d3-selection/src/selection/remove.js", "../../node_modules/d3-selection/src/selection/clone.js", "../../node_modules/d3-selection/src/selection/datum.js", "../../node_modules/d3-selection/src/selection/on.js", "../../node_modules/d3-selection/src/selection/dispatch.js", "../../node_modules/d3-selection/src/selection/iterator.js", "../../node_modules/d3-selection/src/selection/index.js", "../../node_modules/d3-selection/src/select.js", "../../node_modules/d3-selection/src/selectAll.js", "../../node_modules/d3-color/src/define.js", "../../node_modules/d3-color/src/color.js", "../../node_modules/d3-color/src/math.js", "../../node_modules/d3-color/src/lab.js", "../../node_modules/d3-interpolate/src/constant.js", "../../node_modules/d3-interpolate/src/color.js", "../../node_modules/d3-interpolate/src/hcl.js", "../../node_modules/d3-interpolate/src/basis.js", "../../node_modules/d3-interpolate/src/basisClosed.js", "../../node_modules/d3-interpolate/src/rgb.js", "../../node_modules/d3-interpolate/src/numberArray.js", "../../node_modules/d3-interpolate/src/array.js", "../../node_modules/d3-interpolate/src/date.js", "../../node_modules/d3-interpolate/src/number.js", "../../node_modules/d3-interpolate/src/object.js", "../../node_modules/d3-interpolate/src/string.js", "../../node_modules/d3-interpolate/src/value.js", "../../node_modules/d3-interpolate/src/round.js", "../../node_modules/d3-interpolate/src/transform/decompose.js", "../../node_modules/d3-interpolate/src/transform/parse.js", "../../node_modules/d3-interpolate/src/transform/index.js", "../../node_modules/d3-scale/src/init.js", "../../node_modules/d3-scale/src/ordinal.js", "../../node_modules/d3-scale/src/constant.js", "../../node_modules/d3-scale/src/number.js", "../../node_modules/d3-scale/src/continuous.js", "../../node_modules/d3-format/src/formatDecimal.js", "../../node_modules/d3-format/src/exponent.js", "../../node_modules/d3-format/src/formatGroup.js", "../../node_modules/d3-format/src/formatNumerals.js", "../../node_modules/d3-format/src/formatSpecifier.js", "../../node_modules/d3-format/src/formatTrim.js", "../../node_modules/d3-format/src/formatPrefixAuto.js", "../../node_modules/d3-format/src/formatRounded.js", "../../node_modules/d3-format/src/formatTypes.js", "../../node_modules/d3-format/src/identity.js", "../../node_modules/d3-format/src/locale.js", "../../node_modules/d3-format/src/defaultLocale.js", "../../node_modules/d3-format/src/precisionFixed.js", "../../node_modules/d3-format/src/precisionPrefix.js", "../../node_modules/d3-format/src/precisionRound.js", "../../node_modules/d3-scale/src/tickFormat.js", "../../node_modules/d3-scale/src/linear.js", "../../node_modules/d3-time/src/interval.js", "../../node_modules/d3-time/src/millisecond.js", "../../node_modules/d3-time/src/second.js", "../../node_modules/d3-time/src/minute.js", "../../node_modules/d3-time/src/hour.js", "../../node_modules/d3-time/src/day.js", "../../node_modules/d3-time/src/week.js", "../../node_modules/d3-time/src/month.js", "../../node_modules/d3-time/src/year.js", "../../node_modules/d3-time/src/ticks.js", "../../node_modules/d3-time-format/src/locale.js", "../../node_modules/d3-time-format/src/defaultLocale.js", "../../node_modules/d3-scale/src/nice.js", "../../node_modules/d3-scale/src/time.js", "../../node_modules/d3-scale-chromatic/src/colors.js", "../../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js", "../../node_modules/d3-shape/src/constant.js", "../../node_modules/d3-shape/src/math.js", "../../node_modules/d3-path/src/path.js", "../../node_modules/d3-shape/src/path.js", "../../node_modules/d3-shape/src/arc.js", "../../node_modules/d3-shape/src/curve/linear.js", "../../node_modules/d3-shape/src/array.js", "../../node_modules/d3-shape/src/point.js", "../../node_modules/d3-shape/src/line.js", "../../node_modules/d3-shape/src/descending.js", "../../node_modules/d3-shape/src/identity.js", "../../node_modules/d3-shape/src/pie.js", "../../node_modules/d3-shape/src/curve/basis.js", "../../node_modules/d3-shape/src/curve/bump.js", "../../node_modules/d3-shape/src/noop.js", "../../node_modules/d3-shape/src/curve/basisClosed.js", "../../node_modules/d3-shape/src/curve/basisOpen.js", "../../node_modules/d3-shape/src/curve/bundle.js", "../../node_modules/d3-shape/src/curve/cardinal.js", "../../node_modules/d3-shape/src/curve/cardinalClosed.js", "../../node_modules/d3-shape/src/curve/cardinalOpen.js", "../../node_modules/d3-shape/src/curve/catmullRom.js", "../../node_modules/d3-shape/src/curve/catmullRomClosed.js", "../../node_modules/d3-shape/src/curve/catmullRomOpen.js", "../../node_modules/d3-shape/src/curve/linearClosed.js", "../../node_modules/d3-shape/src/curve/monotone.js", "../../node_modules/d3-shape/src/curve/natural.js", "../../node_modules/d3-shape/src/curve/step.js", "../../node_modules/d3-dispatch/src/dispatch.js", "../../node_modules/d3-timer/src/timer.js", "../../node_modules/d3-timer/src/timeout.js", "../../node_modules/d3-transition/src/transition/schedule.js", "../../node_modules/d3-transition/src/interrupt.js", "../../node_modules/d3-transition/src/selection/interrupt.js", "../../node_modules/d3-transition/src/transition/tween.js", "../../node_modules/d3-transition/src/transition/interpolate.js", "../../node_modules/d3-transition/src/transition/attr.js", "../../node_modules/d3-transition/src/transition/attrTween.js", "../../node_modules/d3-transition/src/transition/delay.js", "../../node_modules/d3-transition/src/transition/duration.js", "../../node_modules/d3-transition/src/transition/ease.js", "../../node_modules/d3-transition/src/transition/easeVarying.js", "../../node_modules/d3-transition/src/transition/filter.js", "../../node_modules/d3-transition/src/transition/merge.js", "../../node_modules/d3-transition/src/transition/on.js", "../../node_modules/d3-transition/src/transition/remove.js", "../../node_modules/d3-transition/src/transition/select.js", "../../node_modules/d3-transition/src/transition/selectAll.js", "../../node_modules/d3-transition/src/transition/selection.js", "../../node_modules/d3-transition/src/transition/style.js", "../../node_modules/d3-transition/src/transition/styleTween.js", "../../node_modules/d3-transition/src/transition/text.js", "../../node_modules/d3-transition/src/transition/textTween.js", "../../node_modules/d3-transition/src/transition/transition.js", "../../node_modules/d3-transition/src/transition/end.js", "../../node_modules/d3-transition/src/transition/index.js", "../../node_modules/d3-ease/src/cubic.js", "../../node_modules/d3-transition/src/selection/transition.js", "../../node_modules/d3-transition/src/selection/index.js", "../../node_modules/d3-brush/src/brush.js", "../../node_modules/d3-fetch/src/text.js", "../../node_modules/d3-fetch/src/xml.js", "../../node_modules/d3-zoom/src/transform.js", "../../node_modules/khroma/dist/utils/channel.js", "../../node_modules/khroma/dist/utils/lang.js", "../../node_modules/khroma/dist/utils/unit.js", "../../node_modules/khroma/dist/utils/index.js", "../../node_modules/khroma/dist/constants.js", "../../node_modules/khroma/dist/channels/type.js", "../../node_modules/khroma/dist/channels/index.js", "../../node_modules/khroma/dist/channels/reusable.js", "../../node_modules/khroma/dist/color/hex.js", "../../node_modules/khroma/dist/color/hsl.js", "../../node_modules/khroma/dist/color/keyword.js", "../../node_modules/khroma/dist/color/rgb.js", "../../node_modules/khroma/dist/color/index.js", "../../node_modules/khroma/dist/methods/luminance.js", "../../node_modules/khroma/dist/methods/is_light.js", "../../node_modules/khroma/dist/methods/is_dark.js", "../../node_modules/khroma/dist/methods/adjust_channel.js", "../../node_modules/khroma/dist/methods/lighten.js", "../../node_modules/khroma/dist/methods/darken.js", "../../node_modules/khroma/dist/methods/change.js", "../../node_modules/khroma/dist/methods/rgba.js", "../../node_modules/khroma/dist/methods/channel.js", "../../node_modules/khroma/dist/methods/adjust.js", "../../node_modules/khroma/dist/methods/mix.js", "../../node_modules/khroma/dist/methods/invert.js", "../../node_modules/lodash-es/_freeGlobal.js", "../../node_modules/lodash-es/_root.js", "../../node_modules/lodash-es/_Symbol.js", "../../node_modules/lodash-es/_getRawTag.js", "../../node_modules/lodash-es/_objectToString.js", "../../node_modules/lodash-es/_baseGetTag.js", "../../node_modules/lodash-es/isObject.js", "../../node_modules/lodash-es/isFunction.js", "../../node_modules/lodash-es/_coreJsData.js", "../../node_modules/lodash-es/_isMasked.js", "../../node_modules/lodash-es/_toSource.js", "../../node_modules/lodash-es/_baseIsNative.js", "../../node_modules/lodash-es/_getValue.js", "../../node_modules/lodash-es/_getNative.js", "../../node_modules/lodash-es/_nativeCreate.js", "../../node_modules/lodash-es/_hashClear.js", "../../node_modules/lodash-es/_hashDelete.js", "../../node_modules/lodash-es/_hashGet.js", "../../node_modules/lodash-es/_hashHas.js", "../../node_modules/lodash-es/_hashSet.js", "../../node_modules/lodash-es/_Hash.js", "../../node_modules/lodash-es/_listCacheClear.js", "../../node_modules/lodash-es/eq.js", "../../node_modules/lodash-es/_assocIndexOf.js", "../../node_modules/lodash-es/_listCacheDelete.js", "../../node_modules/lodash-es/_listCacheGet.js", "../../node_modules/lodash-es/_listCacheHas.js", "../../node_modules/lodash-es/_listCacheSet.js", "../../node_modules/lodash-es/_ListCache.js", "../../node_modules/lodash-es/_Map.js", "../../node_modules/lodash-es/_mapCacheClear.js", "../../node_modules/lodash-es/_isKeyable.js", "../../node_modules/lodash-es/_getMapData.js", "../../node_modules/lodash-es/_mapCacheDelete.js", "../../node_modules/lodash-es/_mapCacheGet.js", "../../node_modules/lodash-es/_mapCacheHas.js", "../../node_modules/lodash-es/_mapCacheSet.js", "../../node_modules/lodash-es/_MapCache.js", "../../node_modules/lodash-es/memoize.js", "../../node_modules/lodash-es/_stackClear.js", "../../node_modules/lodash-es/_stackDelete.js", "../../node_modules/lodash-es/_stackGet.js", "../../node_modules/lodash-es/_stackHas.js", "../../node_modules/lodash-es/_stackSet.js", "../../node_modules/lodash-es/_Stack.js", "../../node_modules/lodash-es/_defineProperty.js", "../../node_modules/lodash-es/_baseAssignValue.js", "../../node_modules/lodash-es/_assignMergeValue.js", "../../node_modules/lodash-es/_createBaseFor.js", "../../node_modules/lodash-es/_baseFor.js", "../../node_modules/lodash-es/_cloneBuffer.js", "../../node_modules/lodash-es/_Uint8Array.js", "../../node_modules/lodash-es/_cloneArrayBuffer.js", "../../node_modules/lodash-es/_cloneTypedArray.js", "../../node_modules/lodash-es/_copyArray.js", "../../node_modules/lodash-es/_baseCreate.js", "../../node_modules/lodash-es/_overArg.js", "../../node_modules/lodash-es/_getPrototype.js", "../../node_modules/lodash-es/_isPrototype.js", "../../node_modules/lodash-es/_initCloneObject.js", "../../node_modules/lodash-es/isObjectLike.js", "../../node_modules/lodash-es/_baseIsArguments.js", "../../node_modules/lodash-es/isArguments.js", "../../node_modules/lodash-es/isArray.js", "../../node_modules/lodash-es/isLength.js", "../../node_modules/lodash-es/isArrayLike.js", "../../node_modules/lodash-es/isArrayLikeObject.js", "../../node_modules/lodash-es/stubFalse.js", "../../node_modules/lodash-es/isBuffer.js", "../../node_modules/lodash-es/isPlainObject.js", "../../node_modules/lodash-es/_baseIsTypedArray.js", "../../node_modules/lodash-es/_baseUnary.js", "../../node_modules/lodash-es/_nodeUtil.js", "../../node_modules/lodash-es/isTypedArray.js", "../../node_modules/lodash-es/_safeGet.js", "../../node_modules/lodash-es/_assignValue.js", "../../node_modules/lodash-es/_copyObject.js", "../../node_modules/lodash-es/_baseTimes.js", "../../node_modules/lodash-es/_isIndex.js", "../../node_modules/lodash-es/_arrayLikeKeys.js", "../../node_modules/lodash-es/_nativeKeysIn.js", "../../node_modules/lodash-es/_baseKeysIn.js", "../../node_modules/lodash-es/keysIn.js", "../../node_modules/lodash-es/toPlainObject.js", "../../node_modules/lodash-es/_baseMergeDeep.js", "../../node_modules/lodash-es/_baseMerge.js", "../../node_modules/lodash-es/identity.js", "../../node_modules/lodash-es/_apply.js", "../../node_modules/lodash-es/_overRest.js", "../../node_modules/lodash-es/constant.js", "../../node_modules/lodash-es/_baseSetToString.js", "../../node_modules/lodash-es/_shortOut.js", "../../node_modules/lodash-es/_setToString.js", "../../node_modules/lodash-es/_baseRest.js", "../../node_modules/lodash-es/_isIterateeCall.js", "../../node_modules/lodash-es/_createAssigner.js", "../../node_modules/lodash-es/merge.js", "../../node_modules/lodash-es/_nativeKeys.js", "../../node_modules/lodash-es/_baseKeys.js", "../../node_modules/lodash-es/_DataView.js", "../../node_modules/lodash-es/_Promise.js", "../../node_modules/lodash-es/_Set.js", "../../node_modules/lodash-es/_WeakMap.js", "../../node_modules/lodash-es/_getTag.js", "../../node_modules/lodash-es/isEmpty.js", "../../node_modules/mermaid/dist/mermaid-485fd1a4.js", "../../node_modules/stylis/src/Enum.js", "../../node_modules/stylis/src/Utility.js", "../../node_modules/stylis/src/Tokenizer.js", "../../node_modules/stylis/src/Parser.js", "../../node_modules/stylis/src/Serializer.js"], + "sourcesContent": ["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t) -1;\n}\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str) {\n return str.replace(htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction sanitizeUrl(url) {\n var sanitizedUrl = decodeHtmlCharacters(url || \"\")\n .replace(htmlCtrlEntityRegex, \"\")\n .replace(ctrlCharactersRegex, \"\")\n .trim();\n if (!sanitizedUrl) {\n return \"about:blank\";\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0];\n if (invalidProtocolRegex.test(urlScheme)) {\n return \"about:blank\";\n }\n return sanitizedUrl;\n}\nexports.sanitizeUrl = sanitizeUrl;\n", "const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!apply) {\n apply = function (fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!freeze) {\n freeze = function (x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function (x) {\n return x;\n };\n}\n\nif (!construct) {\n construct = function (Func, args) {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\nexport function unapply(func) {\n return (thisArg, ...args) => apply(func, thisArg, args);\n}\n\nexport function unconstruct(func) {\n return (...args) => construct(func, args);\n}\n\n/* Add properties to a lookup table */\nexport function addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ?? stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/* Shallow clone an object */\nexport function clone(object) {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n newObject[property] = value;\n }\n\n return newObject;\n}\n\n/* This method automatically checks if the prop is function\n * or getter and behaves accordingly. */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n // Object\n entries,\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n isFrozen,\n setPrototypeOf,\n seal,\n // RegExp\n regExpTest,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'section',\n 'select',\n 'shadow',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n]);\n\n// SVG\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n]);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n]);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n]);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n 'mprescripts',\n]);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n]);\n\nexport const text = freeze(['#text']);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'xmlns',\n 'slot',\n]);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n]);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnsalign',\n 'columnlines',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lspace',\n 'lquote',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n]);\n", "import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\n", "import * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n entries,\n freeze,\n arrayForEach,\n arrayPop,\n arrayPush,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n typeErrorCreate,\n lookupGetter,\n} from './utils.js';\n\nconst getGlobal = () => (typeof window === 'undefined' ? null : window);\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (trustedTypes, purifyHostElement) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nfunction createDOMPurify(window = getGlobal()) {\n const DOMPurify = (root) => createDOMPurify(root);\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = VERSION;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n const originalDocument = window.document;\n const currentScript = originalDocument.currentScript;\n\n let { document } = window;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof entries === 'function' &&\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? (PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE)\n : (PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE);\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS =\n 'ALLOWED_TAGS' in cfg\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR =\n 'ALLOWED_ATTR' in cfg\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES =\n 'ALLOWED_NAMESPACES' in cfg\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES =\n 'ADD_URI_SAFE_ATTR' in cfg\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS =\n 'ADD_DATA_URI_TAGS' in cfg\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS =\n 'FORBID_CONTENTS' in cfg\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS =\n 'FORBID_TAGS' in cfg\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : {};\n FORBID_ATTR =\n 'FORBID_ATTR' in cfg\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [...TAGS.text]);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n );\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n );\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n currentScript\n );\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n const HTML_INTEGRATION_POINTS = addToSet({}, [\n 'foreignobject',\n 'desc',\n 'title',\n 'annotation-xml',\n ]);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, TAGS.svg);\n addToSet(ALL_SVG_TAGS, TAGS.svgFilters);\n addToSet(ALL_SVG_TAGS, TAGS.svgDisallowed);\n\n const ALL_MATHML_TAGS = addToSet({}, TAGS.mathMl);\n addToSet(ALL_MATHML_TAGS, TAGS.mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element) {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n const _forceRemove = function (node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n node.remove();\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n const _removeAttribute = function (name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node,\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty) {\n /* Create a HTML document */\n let doc;\n let leadingWhitespace;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '' +\n dirty +\n '';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n const _createIterator = function (root) {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT,\n null,\n false\n );\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n const _isClobbered = function (elm) {\n return (\n elm instanceof HTMLFormElement &&\n (typeof elm.nodeName !== 'string' ||\n typeof elm.textContent !== 'string' ||\n typeof elm.removeChild !== 'function' ||\n !(elm.attributes instanceof NamedNodeMap) ||\n typeof elm.removeAttribute !== 'function' ||\n typeof elm.setAttribute !== 'function' ||\n typeof elm.namespaceURI !== 'string' ||\n typeof elm.insertBefore !== 'function' ||\n typeof elm.hasChildNodes !== 'function')\n );\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n const _isNode = function (object) {\n return typeof Node === 'object'\n ? object instanceof Node\n : object &&\n typeof object === 'object' &&\n typeof object.nodeType === 'number' &&\n typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n const _executeHook = function (entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], (hook) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode) {\n let content;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n (!_isNode(currentNode.content) ||\n !_isNode(currentNode.content.firstElementChild)) &&\n regExpTest(/<[/\\w]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n )\n return false;\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n )\n return false;\n }\n\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(\n cloneNode(childNodes[i], true),\n getNextSibling(currentNode)\n );\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if (\n (tagName === 'noscript' ||\n tagName === 'noembed' ||\n tagName === 'noframes') &&\n regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR, ' ');\n content = stringReplace(content, ERB_EXPR, ' ');\n content = stringReplace(content, TMPLIT_EXPR, ' ');\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function (lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (\n SANITIZE_DOM &&\n (lcName === 'id' || lcName === 'name') &&\n (value in document || value in formElement)\n ) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (\n ALLOW_DATA_ATTR &&\n !FORBID_ATTR[lcName] &&\n regExpTest(DATA_ATTR, lcName)\n ) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n (_basicCustomElementTest(lcTag) &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n (lcName === 'is' &&\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n ) {\n // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n } else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (\n regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if (\n (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n lcTag !== 'script' &&\n stringIndexOf(value, 'data:') === 0 &&\n DATA_URI_TAGS[lcTag]\n ) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (\n ALLOW_UNKNOWN_PROTOCOLS &&\n !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Check for binary attributes */\n } else if (value) {\n return false;\n } else {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n }\n\n return true;\n };\n\n /**\n * _basicCustomElementCheck\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n * @param {string} tagName name of the tag of the node to sanitize\n */\n const _basicCustomElementTest = function (tagName) {\n return tagName.indexOf('-') > 0;\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n const _sanitizeAttributes = function (currentNode) {\n let attr;\n let value;\n let lcName;\n let l;\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n const { attributes } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n };\n l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n attr = attributes[l];\n const { name, namespaceURI } = attr;\n value = name === 'value' ? attr.value : stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR, ' ');\n value = stringReplace(value, ERB_EXPR, ' ');\n value = stringReplace(value, TMPLIT_EXPR, ' ');\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n\n /* Handle attributes that require Trusted Types */\n if (\n trustedTypesPolicy &&\n typeof trustedTypes === 'object' &&\n typeof trustedTypes.getAttributeType === 'function'\n ) {\n if (namespaceURI) {\n /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n } else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML': {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL': {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function (fragment) {\n let shadowNode;\n const shadowIterator = _createIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while ((shadowNode = shadowIterator.nextNode())) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg = {}) {\n let body;\n let importedNode;\n let currentNode;\n let returnNode;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\n 'root node is forbidden and cannot be sanitized in-place'\n );\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (\n !RETURN_DOM &&\n !SAFE_FOR_TEMPLATES &&\n !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1\n ) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while ((currentNode = nodeIterator.nextNode())) {\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (\n WHOLE_DOCUMENT &&\n ALLOWED_TAGS['!doctype'] &&\n body.ownerDocument &&\n body.ownerDocument.doctype &&\n body.ownerDocument.doctype.name &&\n regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n ) {\n serializedHTML =\n '\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR, ' ');\n serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(serializedHTML)\n : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n}\n\nexport default createDOMPurify();\n", "export function dedent(\n templ: TemplateStringsArray | string,\n ...values: unknown[]\n): string {\n let strings = Array.from(typeof templ === 'string' ? [templ] : templ);\n\n // 1. Remove trailing whitespace.\n strings[strings.length - 1] = strings[strings.length - 1].replace(\n /\\r?\\n([\\t ]*)$/,\n '',\n );\n\n // 2. Find all line breaks to determine the highest common indentation level.\n const indentLengths = strings.reduce((arr, str) => {\n const matches = str.match(/\\n([\\t ]+|(?!\\s).)/g);\n if (matches) {\n return arr.concat(\n matches.map((match) => match.match(/[\\t ]/g)?.length ?? 0),\n );\n }\n return arr;\n }, []);\n\n // 3. Remove the common indentation from all strings.\n if (indentLengths.length) {\n const pattern = new RegExp(`\\n[\\t ]{${Math.min(...indentLengths)}}`, 'g');\n\n strings = strings.map((str) => str.replace(pattern, '\\n'));\n }\n\n // 4. Remove leading whitespace.\n strings[0] = strings[0].replace(/^\\r?\\n/, '');\n\n // 5. Perform interpolation.\n let string = strings[0];\n\n values.forEach((value, i) => {\n // 5.1 Read current indentation level\n const endentations = string.match(/(?:^|\\n)( *)$/)\n const endentation = endentations ? endentations[1] : ''\n let indentedValue = value\n // 5.2 Add indentation to values with multiline strings\n if (typeof value === 'string' && value.includes('\\n')) {\n indentedValue = String(value)\n .split('\\n')\n .map((str, i) => {\n return i === 0 ? str : `${endentation}${str}`\n })\n .join('\\n');\n }\n\n string += indentedValue + strings[i + 1];\n });\n\n return string;\n}\n\nexport default dedent;\n", "export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n", "export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n", "export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n", "import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can\u2019t do this\n // for a comparator (except for specific, known comparators) because we can\u2019t\n // tell if the comparator is symmetric, and an asymmetric comparator can\u2019t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n", "export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n", "import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n", "export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n", "const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n", "export default function(x) {\n return x;\n}\n", "import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n", "function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n", "import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n", "// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don\u2019t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n", "function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n", "import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n", "export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n", "import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n", "export default function(update) {\n return new Array(update.length);\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n", "export default function(x) {\n return function() {\n return x;\n };\n}\n", "import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don\u2019t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn\u2019t worried about \u201Clive\u201D collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don\u2019t; we\u2019d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n", "export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n", "export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n", "export default function() {\n return Array.from(this);\n}\n", "export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n", "export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n", "export default function() {\n return !this.node();\n}\n", "export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n", "export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n", "import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n", "import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n", "export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n", "import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n", "function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n", "function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n", "function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n", "function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n", "function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n", "function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n", "import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n", "import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n", "import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n", "function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n", "function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n", "export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n", "function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n", "import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n", "export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n", "import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n", "import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n", "import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n", "export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n", "import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n", "export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n", "import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n", "export default x => () => x;\n", "import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n", "import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n", "export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n", "import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n", "import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n", "export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n", "import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n", "export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n", "export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n", "import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n", "import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n", "import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n", "export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n", "var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n", "import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n", "import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n", "export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n", "import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n", "export default function constants(x) {\n return function() {\n return x;\n };\n}\n", "export default function number(x) {\n return +x;\n}\n", "import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n", "export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n", "export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n", "export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n", "// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n", "// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n", "import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n", "export default function(x) {\n return x;\n}\n", "import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\u00B5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"\u2212\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer \u201Cvalue\u201D part that can be\n // grouped, and fractional or exponential \u201Csuffix\u201D part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n", "import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n", "import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n", "const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n", "import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n", "import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n", "import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n", "export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n", "import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n", "export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n", "import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n", "export default function(x) {\n return function constant() {\n return x;\n };\n}\n", "export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n", "const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We\u2019re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n", "import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n", "import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 \u2265 r0, da1 \u2265 da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it\u2019s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector\u2019s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it\u2019s a circular sector?\n // Or perhaps it\u2019s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector\u2019s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n", "function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n", "export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n", "export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n", "export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n", "export default function(d) {\n return d;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n", "export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n", "import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n", "export default function() {}\n", "import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n", "import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n", "import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n", "export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n", "function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic B\u00E9zier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n", "function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n", "function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n", "var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n", "var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we\u2019ve set an alarm, if we haven\u2019t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n", "import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n", "import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n", "import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n", "import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we\u2019re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we\u2019re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n", "import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n", "import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n", "import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n", "import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n", "import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n", "import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n", "import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n", "import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we\u2019re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n", "function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n", "import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n", "import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n", "import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we\u2019re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n", "function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n", "import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n", "function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n", "import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n", "import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we\u2019re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n", "import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n", "export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n", "import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n", "import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name \u201C__brush\u201D rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n", "function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n", "import text from \"./text.js\";\n\nfunction parser(type) {\n return (input, init) => text(input, init)\n .then(text => (new DOMParser).parseFromString(text, type));\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n", "export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n", "/* IMPORT */\n/* MAIN */\nconst Channel = {\n /* CLAMP */\n min: {\n r: 0,\n g: 0,\n b: 0,\n s: 0,\n l: 0,\n a: 0\n },\n max: {\n r: 255,\n g: 255,\n b: 255,\n h: 360,\n s: 100,\n l: 100,\n a: 1\n },\n clamp: {\n r: (r) => r >= 255 ? 255 : (r < 0 ? 0 : r),\n g: (g) => g >= 255 ? 255 : (g < 0 ? 0 : g),\n b: (b) => b >= 255 ? 255 : (b < 0 ? 0 : b),\n h: (h) => h % 360,\n s: (s) => s >= 100 ? 100 : (s < 0 ? 0 : s),\n l: (l) => l >= 100 ? 100 : (l < 0 ? 0 : l),\n a: (a) => a >= 1 ? 1 : (a < 0 ? 0 : a)\n },\n /* CONVERSION */\n //SOURCE: https://planetcalc.com/7779\n toLinear: (c) => {\n const n = c / 255;\n return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;\n },\n //SOURCE: https://gist.github.com/mjackson/5311256\n hue2rgb: (p, q, t) => {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n },\n hsl2rgb: ({ h, s, l }, channel) => {\n if (!s)\n return l * 2.55; // Achromatic\n h /= 360;\n s /= 100;\n l /= 100;\n const q = (l < .5) ? l * (1 + s) : (l + s) - (l * s);\n const p = 2 * l - q;\n switch (channel) {\n case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;\n case 'g': return Channel.hue2rgb(p, q, h) * 255;\n case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;\n }\n },\n rgb2hsl: ({ r, g, b }, channel) => {\n r /= 255;\n g /= 255;\n b /= 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (channel === 'l')\n return l * 100;\n if (max === min)\n return 0; // Achromatic\n const d = max - min;\n const s = (l > .5) ? d / (2 - max - min) : d / (max + min);\n if (channel === 's')\n return s * 100;\n switch (max) {\n case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;\n case g: return ((b - r) / d + 2) * 60;\n case b: return ((r - g) / d + 4) * 60;\n default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement\n }\n }\n};\n/* EXPORT */\nexport default Channel;\n", "/* MAIN */\nconst Lang = {\n /* API */\n clamp: (number, lower, upper) => {\n if (lower > upper)\n return Math.min(lower, Math.max(upper, number));\n return Math.min(upper, Math.max(lower, number));\n },\n round: (number) => {\n return Math.round(number * 10000000000) / 10000000000;\n }\n};\n/* EXPORT */\nexport default Lang;\n", "/* MAIN */\nconst Unit = {\n /* API */\n dec2hex: (dec) => {\n const hex = Math.round(dec).toString(16);\n return hex.length > 1 ? hex : `0${hex}`;\n }\n};\n/* EXPORT */\nexport default Unit;\n", "/* IMPORT */\nimport channel from './channel.js';\nimport lang from './lang.js';\nimport unit from './unit.js';\n/* MAIN */\nconst Utils = {\n channel,\n lang,\n unit\n};\n/* EXPORT */\nexport default Utils;\n", "/* IMPORT */\nimport _ from './utils/index.js';\n/* MAIN */\nconst DEC2HEX = {};\nfor (let i = 0; i <= 255; i++)\n DEC2HEX[i] = _.unit.dec2hex(i); // Populating dynamically, striking a balance between code size and performance\nconst TYPE = {\n ALL: 0,\n RGB: 1,\n HSL: 2\n};\n/* EXPORT */\nexport { DEC2HEX, TYPE };\n", "/* IMPORT */\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Type {\n constructor() {\n /* VARIABLES */\n this.type = TYPE.ALL;\n }\n /* API */\n get() {\n return this.type;\n }\n set(type) {\n if (this.type && this.type !== type)\n throw new Error('Cannot change both RGB and HSL channels at the same time');\n this.type = type;\n }\n reset() {\n this.type = TYPE.ALL;\n }\n is(type) {\n return this.type === type;\n }\n}\n/* EXPORT */\nexport default Type;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Type from './type.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Channels {\n /* CONSTRUCTOR */\n constructor(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type = new Type();\n }\n /* API */\n set(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type.type = TYPE.ALL;\n return this;\n }\n /* HELPERS */\n _ensureHSL() {\n const data = this.data;\n const { h, s, l } = data;\n if (h === undefined)\n data.h = _.channel.rgb2hsl(data, 'h');\n if (s === undefined)\n data.s = _.channel.rgb2hsl(data, 's');\n if (l === undefined)\n data.l = _.channel.rgb2hsl(data, 'l');\n }\n _ensureRGB() {\n const data = this.data;\n const { r, g, b } = data;\n if (r === undefined)\n data.r = _.channel.hsl2rgb(data, 'r');\n if (g === undefined)\n data.g = _.channel.hsl2rgb(data, 'g');\n if (b === undefined)\n data.b = _.channel.hsl2rgb(data, 'b');\n }\n /* GETTERS */\n get r() {\n const data = this.data;\n const r = data.r;\n if (!this.type.is(TYPE.HSL) && r !== undefined)\n return r;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'r');\n }\n get g() {\n const data = this.data;\n const g = data.g;\n if (!this.type.is(TYPE.HSL) && g !== undefined)\n return g;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'g');\n }\n get b() {\n const data = this.data;\n const b = data.b;\n if (!this.type.is(TYPE.HSL) && b !== undefined)\n return b;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'b');\n }\n get h() {\n const data = this.data;\n const h = data.h;\n if (!this.type.is(TYPE.RGB) && h !== undefined)\n return h;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 'h');\n }\n get s() {\n const data = this.data;\n const s = data.s;\n if (!this.type.is(TYPE.RGB) && s !== undefined)\n return s;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 's');\n }\n get l() {\n const data = this.data;\n const l = data.l;\n if (!this.type.is(TYPE.RGB) && l !== undefined)\n return l;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 'l');\n }\n get a() {\n return this.data.a;\n }\n /* SETTERS */\n set r(r) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.r = r;\n }\n set g(g) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.g = g;\n }\n set b(b) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.b = b;\n }\n set h(h) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.h = h;\n }\n set s(s) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.s = s;\n }\n set l(l) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.l = l;\n }\n set a(a) {\n this.changed = true;\n this.data.a = a;\n }\n}\n/* EXPORT */\nexport default Channels;\n", "/* IMPORT */\nimport Channels from './/index.js';\n/* MAIN */\nconst channels = new Channels({ r: 0, g: 0, b: 0, a: 0 }, 'transparent');\n/* EXPORT */\nexport default channels;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport { DEC2HEX } from '../constants.js';\n/* MAIN */\nconst Hex = {\n /* VARIABLES */\n re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,\n /* API */\n parse: (color) => {\n if (color.charCodeAt(0) !== 35)\n return; // '#'\n const match = color.match(Hex.re);\n if (!match)\n return;\n const hex = match[1];\n const dec = parseInt(hex, 16);\n const length = hex.length;\n const hasAlpha = length % 4 === 0;\n const isFullLength = length > 4;\n const multiplier = isFullLength ? 1 : 17;\n const bits = isFullLength ? 8 : 4;\n const bitsOffset = hasAlpha ? 0 : -1;\n const mask = isFullLength ? 255 : 15;\n return ChannelsReusable.set({\n r: ((dec >> (bits * (bitsOffset + 3))) & mask) * multiplier,\n g: ((dec >> (bits * (bitsOffset + 2))) & mask) * multiplier,\n b: ((dec >> (bits * (bitsOffset + 1))) & mask) * multiplier,\n a: hasAlpha ? (dec & mask) * multiplier / 255 : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // #RRGGBBAA\n return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}${DEC2HEX[Math.round(a * 255)]}`;\n }\n else { // #RRGGBB\n return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}`;\n }\n }\n};\n/* EXPORT */\nexport default Hex;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst HSL = {\n /* VARIABLES */\n re: /^hsla?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(?:deg|grad|rad|turn)?)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(%)?))?\\s*?\\)$/i,\n hueRe: /^(.+?)(deg|grad|rad|turn)$/i,\n /* HELPERS */\n _hue2deg: (hue) => {\n const match = hue.match(HSL.hueRe);\n if (match) {\n const [, number, unit] = match;\n switch (unit) {\n case 'grad': return _.channel.clamp.h(parseFloat(number) * .9);\n case 'rad': return _.channel.clamp.h(parseFloat(number) * 180 / Math.PI);\n case 'turn': return _.channel.clamp.h(parseFloat(number) * 360);\n }\n }\n return _.channel.clamp.h(parseFloat(hue));\n },\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 104 && charCode !== 72)\n return; // 'h'/'H'\n const match = color.match(HSL.re);\n if (!match)\n return;\n const [, h, s, l, a, isAlphaPercentage] = match;\n return ChannelsReusable.set({\n h: HSL._hue2deg(h),\n s: _.channel.clamp.s(parseFloat(s)),\n l: _.channel.clamp.l(parseFloat(l)),\n a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { h, s, l, a } = channels;\n if (a < 1) { // HSLA\n return `hsla(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%, ${a})`;\n }\n else { // HSL\n return `hsl(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%)`;\n }\n }\n};\n/* EXPORT */\nexport default HSL;\n", "/* IMPORT */\nimport Hex from './hex.js';\n/* MAIN */\nconst Keyword = {\n /* VARIABLES */\n colors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyanaqua: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n transparent: '#00000000',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n },\n /* API */\n parse: (color) => {\n color = color.toLowerCase();\n const hex = Keyword.colors[color];\n if (!hex)\n return;\n return Hex.parse(hex);\n },\n stringify: (channels) => {\n const hex = Hex.stringify(channels);\n for (const name in Keyword.colors) {\n if (Keyword.colors[name] === hex)\n return name;\n }\n return;\n }\n};\n/* EXPORT */\nexport default Keyword;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst RGB = {\n /* VARIABLES */\n re: /^rgba?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?)))?\\s*?\\)$/i,\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 114 && charCode !== 82)\n return; // 'r'/'R'\n const match = color.match(RGB.re);\n if (!match)\n return;\n const [, r, isRedPercentage, g, isGreenPercentage, b, isBluePercentage, a, isAlphaPercentage] = match;\n return ChannelsReusable.set({\n r: _.channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),\n g: _.channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),\n b: _.channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),\n a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // RGBA\n return `rgba(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)}, ${_.lang.round(a)})`;\n }\n else { // RGB\n return `rgb(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)})`;\n }\n }\n};\n/* EXPORT */\nexport default RGB;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Hex from './hex.js';\nimport HSL from './hsl.js';\nimport Keyword from './keyword.js';\nimport RGB from './rgb.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nconst Color = {\n /* VARIABLES */\n format: {\n keyword: Keyword,\n hex: Hex,\n rgb: RGB,\n rgba: RGB,\n hsl: HSL,\n hsla: HSL\n },\n /* API */\n parse: (color) => {\n if (typeof color !== 'string')\n return color;\n const channels = Hex.parse(color) || RGB.parse(color) || HSL.parse(color) || Keyword.parse(color); // Color providers ordered with performance in mind\n if (channels)\n return channels;\n throw new Error(`Unsupported color format: \"${color}\"`);\n },\n stringify: (channels) => {\n // SASS returns a keyword if possible, but we avoid doing that as it's slower and doesn't really add any value\n if (!channels.changed && channels.color)\n return channels.color;\n if (channels.type.is(TYPE.HSL) || channels.data.r === undefined) {\n return HSL.stringify(channels);\n }\n else if (channels.a < 1 || !Number.isInteger(channels.r) || !Number.isInteger(channels.g) || !Number.isInteger(channels.b)) {\n return RGB.stringify(channels);\n }\n else {\n return Hex.stringify(channels);\n }\n }\n};\n/* EXPORT */\nexport default Color;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\n//SOURCE: https://planetcalc.com/7779\nconst luminance = (color) => {\n const { r, g, b } = Color.parse(color);\n const luminance = .2126 * _.channel.toLinear(r) + .7152 * _.channel.toLinear(g) + .0722 * _.channel.toLinear(b);\n return _.lang.round(luminance);\n};\n/* EXPORT */\nexport default luminance;\n", "/* IMPORT */\nimport luminance from './luminance.js';\n/* MAIN */\nconst isLight = (color) => {\n return luminance(color) >= .5;\n};\n/* EXPORT */\nexport default isLight;\n", "/* IMPORT */\nimport isLight from './is_light.js';\n/* MAIN */\nconst isDark = (color) => {\n return !isLight(color);\n};\n/* EXPORT */\nexport default isDark;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst adjustChannel = (color, channel, amount) => {\n const channels = Color.parse(color);\n const amountCurrent = channels[channel];\n const amountNext = _.channel.clamp[channel](amountCurrent + amount);\n if (amountCurrent !== amountNext)\n channels[channel] = amountNext;\n return Color.stringify(channels);\n};\n/* EXPORT */\nexport default adjustChannel;\n", "/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst lighten = (color, amount) => {\n return adjustChannel(color, 'l', amount);\n};\n/* EXPORT */\nexport default lighten;\n", "/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst darken = (color, amount) => {\n return adjustChannel(color, 'l', -amount);\n};\n/* EXPORT */\nexport default darken;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst change = (color, channels) => {\n const ch = Color.parse(color);\n for (const c in channels) {\n ch[c] = _.channel.clamp[c](channels[c]);\n }\n return Color.stringify(ch);\n};\n/* EXPORT */\nexport default change;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst rgba = (r, g, b = 0, a = 1) => {\n if (typeof r !== 'number')\n return change(r, { a: g });\n const channels = ChannelsReusable.set({\n r: _.channel.clamp.r(r),\n g: _.channel.clamp.g(g),\n b: _.channel.clamp.b(b),\n a: _.channel.clamp.a(a)\n });\n return Color.stringify(channels);\n};\n/* EXPORT */\nexport default rgba;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst channel = (color, channel) => {\n return _.lang.round(Color.parse(color)[channel]);\n};\n/* EXPORT */\nexport default channel;\n", "/* IMPORT */\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst adjust = (color, channels) => {\n const ch = Color.parse(color);\n const changes = {};\n for (const c in channels) {\n if (!channels[c])\n continue;\n changes[c] = ch[c] + channels[c];\n }\n return change(color, changes);\n};\n/* EXPORT */\nexport default adjust;\n", "/* IMPORT */\nimport Color from '../color/index.js';\nimport rgba from './rgba.js';\n/* MAIN */\n//SOURCE: https://github.com/sass/dart-sass/blob/7457d2e9e7e623d9844ffd037a070cf32d39c348/lib/src/functions/color.dart#L718-L756\nconst mix = (color1, color2, weight = 50) => {\n const { r: r1, g: g1, b: b1, a: a1 } = Color.parse(color1);\n const { r: r2, g: g2, b: b2, a: a2 } = Color.parse(color2);\n const weightScale = weight / 100;\n const weightNormalized = (weightScale * 2) - 1;\n const alphaDelta = a1 - a2;\n const weight1combined = ((weightNormalized * alphaDelta) === -1) ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta);\n const weight1 = (weight1combined + 1) / 2;\n const weight2 = 1 - weight1;\n const r = (r1 * weight1) + (r2 * weight2);\n const g = (g1 * weight1) + (g2 * weight2);\n const b = (b1 * weight1) + (b2 * weight2);\n const a = (a1 * weightScale) + (a2 * (1 - weightScale));\n return rgba(r, g, b, a);\n};\n/* EXPORT */\nexport default mix;\n", "/* IMPORT */\nimport Color from '../color/index.js';\nimport mix from './mix.js';\n/* MAIN */\nconst invert = (color, weight = 100) => {\n const inverse = Color.parse(color);\n inverse.r = 255 - inverse.r;\n inverse.g = 255 - inverse.g;\n inverse.b = 255 - inverse.b;\n return mix(inverse, color, weight);\n};\n/* EXPORT */\nexport default invert;\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n", "import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n", "import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n", "import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n", "import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n", "import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n", "import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n", "import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n", "import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n", "import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n", "import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n", "import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n", "import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n", "import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n", "import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n", "import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n", "import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n", "import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n", "import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n", "import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n", "import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n", "import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n", "import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n", "import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n", "/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n", "import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n", "import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n", "import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n", "import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n", "import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n", "import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n", "import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n", "import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n", "import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n", "import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n", "/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n", "import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n", "import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n", "import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n", "import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n", "import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n", "/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n", "import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n", "/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n", "import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n", "/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n", "import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n", "import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n", "import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n", "import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n", "import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n", "import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n", "import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n", "import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n", "import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n", "import { dedent } from \"ts-dedent\";\nimport dayjs from \"dayjs\";\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport { select, curveBasis, curveBasisClosed, curveBasisOpen, curveBumpX, curveBumpY, curveBundle, curveCardinalClosed, curveCardinalOpen, curveCardinal, curveCatmullRomClosed, curveCatmullRomOpen, curveCatmullRom, curveLinear, curveLinearClosed, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from \"d3\";\nimport DOMPurify from \"dompurify\";\nimport { adjust, invert, darken, lighten, isDark, rgba } from \"khroma\";\nimport memoize from \"lodash-es/memoize.js\";\nimport merge$1 from \"lodash-es/merge.js\";\nimport { serialize, compile, stringify } from \"stylis\";\nimport isEmpty from \"lodash-es/isEmpty.js\";\nconst LEVELS = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5\n};\nconst log$1 = {\n trace: (..._args) => {\n },\n debug: (..._args) => {\n },\n info: (..._args) => {\n },\n warn: (..._args) => {\n },\n error: (..._args) => {\n },\n fatal: (..._args) => {\n }\n};\nconst setLogLevel$1 = function(level = \"fatal\") {\n let numericLevel = LEVELS.fatal;\n if (typeof level === \"string\") {\n level = level.toLowerCase();\n if (level in LEVELS) {\n numericLevel = LEVELS[level];\n }\n } else if (typeof level === \"number\") {\n numericLevel = level;\n }\n log$1.trace = () => {\n };\n log$1.debug = () => {\n };\n log$1.info = () => {\n };\n log$1.warn = () => {\n };\n log$1.error = () => {\n };\n log$1.fatal = () => {\n };\n if (numericLevel <= LEVELS.fatal) {\n log$1.fatal = console.error ? console.error.bind(console, format(\"FATAL\"), \"color: orange\") : console.log.bind(console, \"\\x1B[35m\", format(\"FATAL\"));\n }\n if (numericLevel <= LEVELS.error) {\n log$1.error = console.error ? console.error.bind(console, format(\"ERROR\"), \"color: orange\") : console.log.bind(console, \"\\x1B[31m\", format(\"ERROR\"));\n }\n if (numericLevel <= LEVELS.warn) {\n log$1.warn = console.warn ? console.warn.bind(console, format(\"WARN\"), \"color: orange\") : console.log.bind(console, `\\x1B[33m`, format(\"WARN\"));\n }\n if (numericLevel <= LEVELS.info) {\n log$1.info = console.info ? console.info.bind(console, format(\"INFO\"), \"color: lightblue\") : console.log.bind(console, \"\\x1B[34m\", format(\"INFO\"));\n }\n if (numericLevel <= LEVELS.debug) {\n log$1.debug = console.debug ? console.debug.bind(console, format(\"DEBUG\"), \"color: lightgreen\") : console.log.bind(console, \"\\x1B[32m\", format(\"DEBUG\"));\n }\n if (numericLevel <= LEVELS.trace) {\n log$1.trace = console.debug ? console.debug.bind(console, format(\"TRACE\"), \"color: lightgreen\") : console.log.bind(console, \"\\x1B[32m\", format(\"TRACE\"));\n }\n};\nconst format = (level) => {\n const time = dayjs().format(\"ss.SSS\");\n return `%c${time} : ${level} : `;\n};\nconst lineBreakRegex = //gi;\nconst getRows = (s) => {\n if (!s) {\n return [\"\"];\n }\n const str2 = breakToPlaceholder(s).replace(/\\\\n/g, \"#br#\");\n return str2.split(\"#br#\");\n};\nconst removeScript = (txt) => {\n return DOMPurify.sanitize(txt);\n};\nconst sanitizeMore = (text, config2) => {\n var _a;\n if (((_a = config2.flowchart) == null ? void 0 : _a.htmlLabels) !== false) {\n const level = config2.securityLevel;\n if (level === \"antiscript\" || level === \"strict\") {\n text = removeScript(text);\n } else if (level !== \"loose\") {\n text = breakToPlaceholder(text);\n text = text.replace(//g, \">\");\n text = text.replace(/=/g, \"=\");\n text = placeholderToBreak(text);\n }\n }\n return text;\n};\nconst sanitizeText$2 = (text, config2) => {\n if (!text) {\n return text;\n }\n if (config2.dompurifyConfig) {\n text = DOMPurify.sanitize(sanitizeMore(text, config2), config2.dompurifyConfig).toString();\n } else {\n text = DOMPurify.sanitize(sanitizeMore(text, config2), {\n FORBID_TAGS: [\"style\"]\n }).toString();\n }\n return text;\n};\nconst sanitizeTextOrArray = (a, config2) => {\n if (typeof a === \"string\") {\n return sanitizeText$2(a, config2);\n }\n return a.flat().map((x) => sanitizeText$2(x, config2));\n};\nconst hasBreaks = (text) => {\n return lineBreakRegex.test(text);\n};\nconst splitBreaks = (text) => {\n return text.split(lineBreakRegex);\n};\nconst placeholderToBreak = (s) => {\n return s.replace(/#br#/g, \"
\");\n};\nconst breakToPlaceholder = (s) => {\n return s.replace(lineBreakRegex, \"#br#\");\n};\nconst getUrl = (useAbsolute) => {\n let url = \"\";\n if (useAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replaceAll(/\\(/g, \"\\\\(\");\n url = url.replaceAll(/\\)/g, \"\\\\)\");\n }\n return url;\n};\nconst evaluate = (val) => val === false || [\"false\", \"null\", \"0\"].includes(String(val).trim().toLowerCase()) ? false : true;\nconst getMax = function(...values) {\n const newValues = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.max(...newValues);\n};\nconst getMin = function(...values) {\n const newValues = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.min(...newValues);\n};\nconst parseGenericTypes = function(input) {\n const inputSets = input.split(/(,)/);\n const output = [];\n for (let i = 0; i < inputSets.length; i++) {\n let thisSet = inputSets[i];\n if (thisSet === \",\" && i > 0 && i + 1 < inputSets.length) {\n const previousSet = inputSets[i - 1];\n const nextSet = inputSets[i + 1];\n if (shouldCombineSets(previousSet, nextSet)) {\n thisSet = previousSet + \",\" + nextSet;\n i++;\n output.pop();\n }\n }\n output.push(processSet(thisSet));\n }\n return output.join(\"\");\n};\nconst countOccurrence = (string, substring) => {\n return Math.max(0, string.split(substring).length - 1);\n};\nconst shouldCombineSets = (previousSet, nextSet) => {\n const prevCount = countOccurrence(previousSet, \"~\");\n const nextCount = countOccurrence(nextSet, \"~\");\n return prevCount === 1 && nextCount === 1;\n};\nconst processSet = (input) => {\n const tildeCount = countOccurrence(input, \"~\");\n let hasStartingTilde = false;\n if (tildeCount <= 1) {\n return input;\n }\n if (tildeCount % 2 !== 0 && input.startsWith(\"~\")) {\n input = input.substring(1);\n hasStartingTilde = true;\n }\n const chars = [...input];\n let first = chars.indexOf(\"~\");\n let last = chars.lastIndexOf(\"~\");\n while (first !== -1 && last !== -1 && first !== last) {\n chars[first] = \"<\";\n chars[last] = \">\";\n first = chars.indexOf(\"~\");\n last = chars.lastIndexOf(\"~\");\n }\n if (hasStartingTilde) {\n chars.unshift(\"~\");\n }\n return chars.join(\"\");\n};\nconst common$1 = {\n getRows,\n sanitizeText: sanitizeText$2,\n sanitizeTextOrArray,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript,\n getUrl,\n evaluate,\n getMax,\n getMin\n};\nconst mkBorder = (col, darkMode) => darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 });\nconst oldAttributeBackgroundColorOdd = \"#ffffff\";\nconst oldAttributeBackgroundColorEven = \"#f2f2f2\";\nlet Theme$4 = class Theme {\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#fff4dd\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"#333\";\n this.THEME_COLOR_LIMIT = 12;\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n }\n updateColors() {\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? \"#eee\" : \"#333\");\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || \"#fff5ad\";\n this.noteTextColor = this.noteTextColor || \"#333\";\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.arrowheadColor = this.arrowheadColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n this.border2 = this.border2 || this.tertiaryBorderColor;\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground = this.edgeLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || \"grey\";\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || \"white\";\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || \"#eeeeee\";\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || \"lightgrey\";\n this.doneTaskBkgColor = this.doneTaskBkgColor || \"lightgrey\";\n this.doneTaskBorderColor = this.doneTaskBorderColor || \"grey\";\n this.critBorderColor = this.critBorderColor || \"#ff8888\";\n this.critBkgColor = this.critBkgColor || \"red\";\n this.todayLineColor = this.todayLineColor || \"red\";\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || \"#003163\";\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210, l: 150 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 25);\n }\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten(this[\"cScale\" + i], 10);\n } else {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 10);\n }\n }\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n this.classText = this.classText || this.textColor;\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: 60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: 60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor = this.branchLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$4 = (userOverrides) => {\n const theme2 = new Theme$4();\n theme2.calculate(userOverrides);\n return theme2;\n};\nlet Theme$3 = class Theme2 {\n constructor() {\n this.background = \"#333\";\n this.primaryColor = \"#1f2020\";\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.mainBkg = \"#1f2020\";\n this.secondBkg = \"calculated\";\n this.mainContrastColor = \"lightgrey\";\n this.darkTextColor = lighten(invert(\"#323D47\"), 10);\n this.lineColor = \"calculated\";\n this.border1 = \"#81B1DB\";\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = \"calculated\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.labelBackground = \"#181818\";\n this.textColor = \"#ccc\";\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"#F9FFFE\";\n this.edgeLabelBackground = \"calculated\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"calculated\";\n this.actorLineColor = \"calculated\";\n this.signalColor = \"calculated\";\n this.signalTextColor = \"calculated\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"calculated\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"calculated\";\n this.activationBkgColor = \"calculated\";\n this.sequenceNumberColor = \"black\";\n this.sectionBkgColor = darken(\"#EAE8D9\", 30);\n this.altSectionBkgColor = \"calculated\";\n this.sectionBkgColor2 = \"#EAE8D9\";\n this.excludeBkgColor = darken(this.sectionBkgColor, 10);\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = \"calculated\";\n this.taskTextColor = \"calculated\";\n this.taskTextLightColor = \"calculated\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = \"#81B1DB\";\n this.gridColor = \"calculated\";\n this.doneTaskBkgColor = \"calculated\";\n this.doneTaskBorderColor = \"grey\";\n this.critBorderColor = \"#E83737\";\n this.critBkgColor = \"#E83737\";\n this.taskTextDarkColor = \"calculated\";\n this.todayLineColor = \"#DB5757\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"calculated\";\n this.errorBkgColor = \"#a44141\";\n this.errorTextColor = \"#ddd\";\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#555\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = \"#f4f4f4\";\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n this.cScale1 = this.cScale1 || \"#0b0000\";\n this.cScale2 = this.cScale2 || \"#4d1037\";\n this.cScale3 = this.cScale3 || \"#3f5258\";\n this.cScale4 = this.cScale4 || \"#4f2f1b\";\n this.cScale5 = this.cScale5 || \"#6e0a0a\";\n this.cScale6 = this.cScale6 || \"#3b0048\";\n this.cScale7 = this.cScale7 || \"#995a01\";\n this.cScale8 = this.cScale8 || \"#154706\";\n this.cScale9 = this.cScale9 || \"#161722\";\n this.cScale10 = this.cScale10 || \"#00296f\";\n this.cScale11 = this.cScale11 || \"#01629c\";\n this.cScale12 = this.cScale12 || \"#010029\";\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten(this[\"cScale\" + i], 10);\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-10 + i * 4) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-7 + i * 4) });\n }\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"pie\" + i] = this[\"cScale\" + i];\n }\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.classText = this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = lighten(this.secondaryColor, 20);\n this.git1 = lighten(this.pie2 || this.secondaryColor, 20);\n this.git2 = lighten(this.pie3 || this.tertiaryColor, 20);\n this.git3 = lighten(this.pie4 || adjust(this.primaryColor, { h: -30 }), 20);\n this.git4 = lighten(this.pie5 || adjust(this.primaryColor, { h: -60 }), 20);\n this.git5 = lighten(this.pie6 || adjust(this.primaryColor, { h: -90 }), 10);\n this.git6 = lighten(this.pie7 || adjust(this.primaryColor, { h: 60 }), 10);\n this.git7 = lighten(this.pie8 || adjust(this.primaryColor, { h: 120 }), 20);\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || lighten(this.background, 12);\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || lighten(this.background, 2);\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$3 = (userOverrides) => {\n const theme2 = new Theme$3();\n theme2.calculate(userOverrides);\n return theme2;\n};\nlet Theme$2 = class Theme3 {\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#ECECFF\";\n this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.secondaryColor = \"#ffffde\";\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.background = \"white\";\n this.mainBkg = \"#ECECFF\";\n this.secondBkg = \"#ffffde\";\n this.lineColor = \"#333333\";\n this.border1 = \"#9370DB\";\n this.border2 = \"#aaaa33\";\n this.arrowheadColor = \"#333333\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.labelBackground = \"#e8e8e8\";\n this.textColor = \"#333\";\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"calculated\";\n this.edgeLabelBackground = \"calculated\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"black\";\n this.actorLineColor = \"grey\";\n this.signalColor = \"calculated\";\n this.signalTextColor = \"calculated\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"calculated\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"#666\";\n this.activationBkgColor = \"#f4f4f4\";\n this.sequenceNumberColor = \"white\";\n this.sectionBkgColor = \"calculated\";\n this.altSectionBkgColor = \"calculated\";\n this.sectionBkgColor2 = \"calculated\";\n this.excludeBkgColor = \"#eeeeee\";\n this.taskBorderColor = \"calculated\";\n this.taskBkgColor = \"calculated\";\n this.taskTextLightColor = \"calculated\";\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = \"calculated\";\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = \"calculated\";\n this.activeTaskBorderColor = \"calculated\";\n this.activeTaskBkgColor = \"calculated\";\n this.gridColor = \"calculated\";\n this.doneTaskBkgColor = \"calculated\";\n this.doneTaskBorderColor = \"calculated\";\n this.critBorderColor = \"calculated\";\n this.critBkgColor = \"calculated\";\n this.todayLineColor = \"calculated\";\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"#fff400\";\n this.taskBorderColor = \"#534fbc\";\n this.taskBkgColor = \"#8a90dd\";\n this.taskTextLightColor = \"white\";\n this.taskTextColor = \"calculated\";\n this.taskTextDarkColor = \"black\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = \"#534fbc\";\n this.activeTaskBkgColor = \"#bfc7ff\";\n this.gridColor = \"lightgrey\";\n this.doneTaskBkgColor = \"lightgrey\";\n this.doneTaskBorderColor = \"grey\";\n this.critBorderColor = \"#ff8888\";\n this.critBkgColor = \"red\";\n this.todayLineColor = \"red\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n this.updateColors();\n }\n updateColors() {\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this[\"cScalePeer1\"] = this[\"cScalePeer1\"] || darken(this.secondaryColor, 45);\n this[\"cScalePeer2\"] = this[\"cScalePeer2\"] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 10);\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 25);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || adjust(this[\"cScale\" + i], { h: 180 });\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { h: 30, l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { h: 30, l: -(7 + i * 5) });\n }\n this.scaleLabelColor = this.scaleLabelColor !== \"calculated\" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;\n if (this.labelTextColor !== \"calculated\") {\n this.cScaleLabel0 = this.cScaleLabel0 || invert(this.labelTextColor);\n this.cScaleLabel3 = this.cScaleLabel3 || invert(this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.labelTextColor;\n }\n }\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f0f0f0\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.specialStateColor = this.lineColor;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.classText = this.primaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || adjust(this.tertiaryColor, { l: -40 });\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -20 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: 60, l: -20 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -40 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: -40 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: 60, l: -40 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -90, l: -40 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -30 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || darken(invert(this.git0), 25);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$2 = (userOverrides) => {\n const theme2 = new Theme$2();\n theme2.calculate(userOverrides);\n return theme2;\n};\nlet Theme$1 = class Theme4 {\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#cde498\";\n this.secondaryColor = \"#cdffb2\";\n this.background = \"white\";\n this.mainBkg = \"#cde498\";\n this.secondBkg = \"#cdffb2\";\n this.lineColor = \"green\";\n this.border1 = \"#13540c\";\n this.border2 = \"#6eaa49\";\n this.arrowheadColor = \"green\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.tertiaryColor = lighten(\"#cde498\", 10);\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.primaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"#333\";\n this.edgeLabelBackground = \"#e8e8e8\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"black\";\n this.actorLineColor = \"grey\";\n this.signalColor = \"#333\";\n this.signalTextColor = \"#333\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"#326932\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"#666\";\n this.activationBkgColor = \"#f4f4f4\";\n this.sequenceNumberColor = \"white\";\n this.sectionBkgColor = \"#6eaa49\";\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"#6eaa49\";\n this.excludeBkgColor = \"#eeeeee\";\n this.taskBorderColor = \"calculated\";\n this.taskBkgColor = \"#487e3a\";\n this.taskTextLightColor = \"white\";\n this.taskTextColor = \"calculated\";\n this.taskTextDarkColor = \"black\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = \"calculated\";\n this.activeTaskBkgColor = \"calculated\";\n this.gridColor = \"lightgrey\";\n this.doneTaskBkgColor = \"lightgrey\";\n this.doneTaskBorderColor = \"grey\";\n this.critBorderColor = \"#ff8888\";\n this.critBkgColor = \"red\";\n this.todayLineColor = \"red\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n }\n updateColors() {\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this[\"cScalePeer1\"] = this[\"cScalePeer1\"] || darken(this.secondaryColor, 45);\n this[\"cScalePeer2\"] = this[\"cScalePeer2\"] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 10);\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 25);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || adjust(this[\"cScale\" + i], { h: 180 });\n }\n this.scaleLabelColor = this.scaleLabelColor !== \"calculated\" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(8 + i * 5) });\n }\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f0f0f0\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = this.lineColor;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.classText = this.primaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -30 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { h: 40, l: -40 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: 60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: 60, l: -50 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -50 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -50 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$1 = (userOverrides) => {\n const theme2 = new Theme$1();\n theme2.calculate(userOverrides);\n return theme2;\n};\nclass Theme5 {\n constructor() {\n this.primaryColor = \"#eee\";\n this.contrast = \"#707070\";\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = \"#ffffff\";\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.mainBkg = \"#eee\";\n this.secondBkg = \"calculated\";\n this.lineColor = \"#666\";\n this.border1 = \"#999\";\n this.border2 = \"calculated\";\n this.note = \"#ffa\";\n this.text = \"#333\";\n this.critical = \"#d42\";\n this.done = \"#bbb\";\n this.arrowheadColor = \"#333333\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"calculated\";\n this.edgeLabelBackground = \"white\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"calculated\";\n this.actorLineColor = \"calculated\";\n this.signalColor = \"calculated\";\n this.signalTextColor = \"calculated\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"calculated\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"calculated\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"#666\";\n this.activationBkgColor = \"#f4f4f4\";\n this.sequenceNumberColor = \"white\";\n this.sectionBkgColor = \"calculated\";\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"calculated\";\n this.excludeBkgColor = \"#eeeeee\";\n this.taskBorderColor = \"calculated\";\n this.taskBkgColor = \"calculated\";\n this.taskTextLightColor = \"white\";\n this.taskTextColor = \"calculated\";\n this.taskTextDarkColor = \"calculated\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = \"calculated\";\n this.activeTaskBkgColor = \"calculated\";\n this.gridColor = \"calculated\";\n this.doneTaskBkgColor = \"calculated\";\n this.doneTaskBorderColor = \"calculated\";\n this.critBkgColor = \"calculated\";\n this.critBorderColor = \"calculated\";\n this.todayLineColor = \"calculated\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = \"#999\";\n this.noteBkgColor = \"#666\";\n this.noteTextColor = \"#fff\";\n this.cScale0 = this.cScale0 || \"#555\";\n this.cScale1 = this.cScale1 || \"#F4F4F4\";\n this.cScale2 = this.cScale2 || \"#555\";\n this.cScale3 = this.cScale3 || \"#BBB\";\n this.cScale4 = this.cScale4 || \"#777\";\n this.cScale5 = this.cScale5 || \"#999\";\n this.cScale6 = this.cScale6 || \"#DDD\";\n this.cScale7 = this.cScale7 || \"#FFF\";\n this.cScale8 = this.cScale8 || \"#DDD\";\n this.cScale9 = this.cScale9 || \"#BBB\";\n this.cScale10 = this.cScale10 || \"#999\";\n this.cScale11 = this.cScale11 || \"#777\";\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten(this[\"cScale\" + i], 10);\n } else {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 10);\n }\n }\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n this[\"cScaleLabel0\"] = this[\"cScaleLabel0\"] || this.cScale1;\n this[\"cScaleLabel2\"] = this[\"cScaleLabel2\"] || this.cScale1;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { l: -(8 + i * 5) });\n }\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n this.taskBorderColor = darken(this.contrast, 10);\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n this.todayLineColor = this.critBkgColor;\n this.transitionColor = this.transitionColor || \"#000\";\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f4f4f4\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.stateBorder = this.stateBorder || \"#000\";\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = \"#222\";\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.classText = this.primaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"pie\" + i] = this[\"cScale\" + i];\n }\n this.pie12 = this.pie0;\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = darken(this.pie1, 25) || this.primaryColor;\n this.git1 = this.pie2 || this.secondaryColor;\n this.git2 = this.pie3 || this.tertiaryColor;\n this.git3 = this.pie4 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.pie5 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.pie6 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.pie7 || adjust(this.primaryColor, { h: 60 });\n this.git7 = this.pie8 || adjust(this.primaryColor, { h: 120 });\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n this.gitBranchLabel0 = this.branchLabelColor;\n this.gitBranchLabel1 = \"white\";\n this.gitBranchLabel2 = this.branchLabelColor;\n this.gitBranchLabel3 = \"white\";\n this.gitBranchLabel4 = this.branchLabelColor;\n this.gitBranchLabel5 = this.branchLabelColor;\n this.gitBranchLabel6 = this.branchLabelColor;\n this.gitBranchLabel7 = this.branchLabelColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\nconst getThemeVariables = (userOverrides) => {\n const theme2 = new Theme5();\n theme2.calculate(userOverrides);\n return theme2;\n};\nconst theme = {\n base: {\n getThemeVariables: getThemeVariables$4\n },\n dark: {\n getThemeVariables: getThemeVariables$3\n },\n default: {\n getThemeVariables: getThemeVariables$2\n },\n forest: {\n getThemeVariables: getThemeVariables$1\n },\n neutral: {\n getThemeVariables\n }\n};\nconst defaultConfigJson = {\n \"flowchart\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 8,\n \"htmlLabels\": true,\n \"nodeSpacing\": 50,\n \"rankSpacing\": 50,\n \"curve\": \"basis\",\n \"padding\": 15,\n \"defaultRenderer\": \"dagre-wrapper\",\n \"wrappingWidth\": 200\n },\n \"sequence\": {\n \"useMaxWidth\": true,\n \"hideUnusedParticipants\": false,\n \"activationWidth\": 10,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"actorMargin\": 50,\n \"width\": 150,\n \"height\": 65,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"mirrorActors\": true,\n \"forceMenus\": false,\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"showSequenceNumbers\": false,\n \"actorFontSize\": 14,\n \"actorFontFamily\": '\"Open Sans\", sans-serif',\n \"actorFontWeight\": 400,\n \"noteFontSize\": 14,\n \"noteFontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif',\n \"noteFontWeight\": 400,\n \"noteAlign\": \"center\",\n \"messageFontSize\": 16,\n \"messageFontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif',\n \"messageFontWeight\": 400,\n \"wrap\": false,\n \"wrapPadding\": 10,\n \"labelBoxWidth\": 50,\n \"labelBoxHeight\": 20\n },\n \"gantt\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"barHeight\": 20,\n \"barGap\": 4,\n \"topPadding\": 50,\n \"rightPadding\": 75,\n \"leftPadding\": 75,\n \"gridLineStartPadding\": 35,\n \"fontSize\": 11,\n \"sectionFontSize\": 11,\n \"numberSectionStyles\": 4,\n \"axisFormat\": \"%Y-%m-%d\",\n \"topAxis\": false,\n \"displayMode\": \"\",\n \"weekday\": \"sunday\"\n },\n \"journey\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"leftMargin\": 150,\n \"width\": 150,\n \"height\": 50,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"taskFontSize\": 14,\n \"taskFontFamily\": '\"Open Sans\", sans-serif',\n \"taskMargin\": 50,\n \"activationWidth\": 10,\n \"textPlacement\": \"fo\",\n \"actorColours\": [\n \"#8FBC8F\",\n \"#7CFC00\",\n \"#00FFFF\",\n \"#20B2AA\",\n \"#B0E0E6\",\n \"#FFFFE0\"\n ],\n \"sectionFills\": [\n \"#191970\",\n \"#8B008B\",\n \"#4B0082\",\n \"#2F4F4F\",\n \"#800000\",\n \"#8B4513\",\n \"#00008B\"\n ],\n \"sectionColours\": [\n \"#fff\"\n ]\n },\n \"class\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"arrowMarkerAbsolute\": false,\n \"dividerMargin\": 10,\n \"padding\": 5,\n \"textHeight\": 10,\n \"defaultRenderer\": \"dagre-wrapper\",\n \"htmlLabels\": false\n },\n \"state\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"dividerMargin\": 10,\n \"sizeUnit\": 5,\n \"padding\": 8,\n \"textHeight\": 10,\n \"titleShift\": -15,\n \"noteMargin\": 10,\n \"forkWidth\": 70,\n \"forkHeight\": 7,\n \"miniPadding\": 2,\n \"fontSizeFactor\": 5.02,\n \"fontSize\": 24,\n \"labelHeight\": 16,\n \"edgeLengthFactor\": \"20\",\n \"compositTitleSize\": 35,\n \"radius\": 5,\n \"defaultRenderer\": \"dagre-wrapper\"\n },\n \"er\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 20,\n \"layoutDirection\": \"TB\",\n \"minEntityWidth\": 100,\n \"minEntityHeight\": 75,\n \"entityPadding\": 15,\n \"stroke\": \"gray\",\n \"fill\": \"honeydew\",\n \"fontSize\": 12\n },\n \"pie\": {\n \"useMaxWidth\": true,\n \"textPosition\": 0.75\n },\n \"quadrantChart\": {\n \"useMaxWidth\": true,\n \"chartWidth\": 500,\n \"chartHeight\": 500,\n \"titleFontSize\": 20,\n \"titlePadding\": 10,\n \"quadrantPadding\": 5,\n \"xAxisLabelPadding\": 5,\n \"yAxisLabelPadding\": 5,\n \"xAxisLabelFontSize\": 16,\n \"yAxisLabelFontSize\": 16,\n \"quadrantLabelFontSize\": 16,\n \"quadrantTextTopPadding\": 5,\n \"pointTextPadding\": 5,\n \"pointLabelFontSize\": 12,\n \"pointRadius\": 5,\n \"xAxisPosition\": \"top\",\n \"yAxisPosition\": \"left\",\n \"quadrantInternalBorderStrokeWidth\": 1,\n \"quadrantExternalBorderStrokeWidth\": 2\n },\n \"requirement\": {\n \"useMaxWidth\": true,\n \"rect_fill\": \"#f9f9f9\",\n \"text_color\": \"#333\",\n \"rect_border_size\": \"0.5px\",\n \"rect_border_color\": \"#bbb\",\n \"rect_min_width\": 200,\n \"rect_min_height\": 200,\n \"fontSize\": 14,\n \"rect_padding\": 10,\n \"line_height\": 20\n },\n \"mindmap\": {\n \"useMaxWidth\": true,\n \"padding\": 10,\n \"maxNodeWidth\": 200\n },\n \"timeline\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"leftMargin\": 150,\n \"width\": 150,\n \"height\": 50,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"taskFontSize\": 14,\n \"taskFontFamily\": '\"Open Sans\", sans-serif',\n \"taskMargin\": 50,\n \"activationWidth\": 10,\n \"textPlacement\": \"fo\",\n \"actorColours\": [\n \"#8FBC8F\",\n \"#7CFC00\",\n \"#00FFFF\",\n \"#20B2AA\",\n \"#B0E0E6\",\n \"#FFFFE0\"\n ],\n \"sectionFills\": [\n \"#191970\",\n \"#8B008B\",\n \"#4B0082\",\n \"#2F4F4F\",\n \"#800000\",\n \"#8B4513\",\n \"#00008B\"\n ],\n \"sectionColours\": [\n \"#fff\"\n ],\n \"disableMulticolor\": false\n },\n \"gitGraph\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 8,\n \"nodeLabel\": {\n \"width\": 75,\n \"height\": 100,\n \"x\": -25,\n \"y\": 0\n },\n \"mainBranchName\": \"main\",\n \"mainBranchOrder\": 0,\n \"showCommitLabel\": true,\n \"showBranches\": true,\n \"rotateCommitLabel\": true,\n \"arrowMarkerAbsolute\": false\n },\n \"c4\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"c4ShapeMargin\": 50,\n \"c4ShapePadding\": 20,\n \"width\": 216,\n \"height\": 60,\n \"boxMargin\": 10,\n \"c4ShapeInRow\": 4,\n \"nextLinePaddingX\": 0,\n \"c4BoundaryInRow\": 2,\n \"personFontSize\": 14,\n \"personFontFamily\": '\"Open Sans\", sans-serif',\n \"personFontWeight\": \"normal\",\n \"external_personFontSize\": 14,\n \"external_personFontFamily\": '\"Open Sans\", sans-serif',\n \"external_personFontWeight\": \"normal\",\n \"systemFontSize\": 14,\n \"systemFontFamily\": '\"Open Sans\", sans-serif',\n \"systemFontWeight\": \"normal\",\n \"external_systemFontSize\": 14,\n \"external_systemFontFamily\": '\"Open Sans\", sans-serif',\n \"external_systemFontWeight\": \"normal\",\n \"system_dbFontSize\": 14,\n \"system_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"system_dbFontWeight\": \"normal\",\n \"external_system_dbFontSize\": 14,\n \"external_system_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"external_system_dbFontWeight\": \"normal\",\n \"system_queueFontSize\": 14,\n \"system_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"system_queueFontWeight\": \"normal\",\n \"external_system_queueFontSize\": 14,\n \"external_system_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"external_system_queueFontWeight\": \"normal\",\n \"boundaryFontSize\": 14,\n \"boundaryFontFamily\": '\"Open Sans\", sans-serif',\n \"boundaryFontWeight\": \"normal\",\n \"messageFontSize\": 12,\n \"messageFontFamily\": '\"Open Sans\", sans-serif',\n \"messageFontWeight\": \"normal\",\n \"containerFontSize\": 14,\n \"containerFontFamily\": '\"Open Sans\", sans-serif',\n \"containerFontWeight\": \"normal\",\n \"external_containerFontSize\": 14,\n \"external_containerFontFamily\": '\"Open Sans\", sans-serif',\n \"external_containerFontWeight\": \"normal\",\n \"container_dbFontSize\": 14,\n \"container_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"container_dbFontWeight\": \"normal\",\n \"external_container_dbFontSize\": 14,\n \"external_container_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"external_container_dbFontWeight\": \"normal\",\n \"container_queueFontSize\": 14,\n \"container_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"container_queueFontWeight\": \"normal\",\n \"external_container_queueFontSize\": 14,\n \"external_container_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"external_container_queueFontWeight\": \"normal\",\n \"componentFontSize\": 14,\n \"componentFontFamily\": '\"Open Sans\", sans-serif',\n \"componentFontWeight\": \"normal\",\n \"external_componentFontSize\": 14,\n \"external_componentFontFamily\": '\"Open Sans\", sans-serif',\n \"external_componentFontWeight\": \"normal\",\n \"component_dbFontSize\": 14,\n \"component_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"component_dbFontWeight\": \"normal\",\n \"external_component_dbFontSize\": 14,\n \"external_component_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"external_component_dbFontWeight\": \"normal\",\n \"component_queueFontSize\": 14,\n \"component_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"component_queueFontWeight\": \"normal\",\n \"external_component_queueFontSize\": 14,\n \"external_component_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"external_component_queueFontWeight\": \"normal\",\n \"wrap\": true,\n \"wrapPadding\": 10,\n \"person_bg_color\": \"#08427B\",\n \"person_border_color\": \"#073B6F\",\n \"external_person_bg_color\": \"#686868\",\n \"external_person_border_color\": \"#8A8A8A\",\n \"system_bg_color\": \"#1168BD\",\n \"system_border_color\": \"#3C7FC0\",\n \"system_db_bg_color\": \"#1168BD\",\n \"system_db_border_color\": \"#3C7FC0\",\n \"system_queue_bg_color\": \"#1168BD\",\n \"system_queue_border_color\": \"#3C7FC0\",\n \"external_system_bg_color\": \"#999999\",\n \"external_system_border_color\": \"#8A8A8A\",\n \"external_system_db_bg_color\": \"#999999\",\n \"external_system_db_border_color\": \"#8A8A8A\",\n \"external_system_queue_bg_color\": \"#999999\",\n \"external_system_queue_border_color\": \"#8A8A8A\",\n \"container_bg_color\": \"#438DD5\",\n \"container_border_color\": \"#3C7FC0\",\n \"container_db_bg_color\": \"#438DD5\",\n \"container_db_border_color\": \"#3C7FC0\",\n \"container_queue_bg_color\": \"#438DD5\",\n \"container_queue_border_color\": \"#3C7FC0\",\n \"external_container_bg_color\": \"#B3B3B3\",\n \"external_container_border_color\": \"#A6A6A6\",\n \"external_container_db_bg_color\": \"#B3B3B3\",\n \"external_container_db_border_color\": \"#A6A6A6\",\n \"external_container_queue_bg_color\": \"#B3B3B3\",\n \"external_container_queue_border_color\": \"#A6A6A6\",\n \"component_bg_color\": \"#85BBF0\",\n \"component_border_color\": \"#78A8D8\",\n \"component_db_bg_color\": \"#85BBF0\",\n \"component_db_border_color\": \"#78A8D8\",\n \"component_queue_bg_color\": \"#85BBF0\",\n \"component_queue_border_color\": \"#78A8D8\",\n \"external_component_bg_color\": \"#CCCCCC\",\n \"external_component_border_color\": \"#BFBFBF\",\n \"external_component_db_bg_color\": \"#CCCCCC\",\n \"external_component_db_border_color\": \"#BFBFBF\",\n \"external_component_queue_bg_color\": \"#CCCCCC\",\n \"external_component_queue_border_color\": \"#BFBFBF\"\n },\n \"sankey\": {\n \"useMaxWidth\": true,\n \"width\": 600,\n \"height\": 400,\n \"linkColor\": \"gradient\",\n \"nodeAlignment\": \"justify\",\n \"showValues\": true,\n \"prefix\": \"\",\n \"suffix\": \"\"\n },\n \"theme\": \"default\",\n \"maxTextSize\": 5e4,\n \"darkMode\": false,\n \"fontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif;',\n \"logLevel\": 5,\n \"securityLevel\": \"strict\",\n \"startOnLoad\": true,\n \"arrowMarkerAbsolute\": false,\n \"secure\": [\n \"secure\",\n \"securityLevel\",\n \"startOnLoad\",\n \"maxTextSize\"\n ],\n \"deterministicIds\": false,\n \"fontSize\": 16\n};\nconst config = {\n ...defaultConfigJson,\n // Set, even though they're `undefined` so that `configKeys` finds these keys\n // TODO: Should we replace these with `null` so that they can go in the JSON Schema?\n deterministicIDSeed: void 0,\n themeCSS: void 0,\n // add non-JSON default config values\n themeVariables: theme[\"default\"].getThemeVariables(),\n sequence: {\n ...defaultConfigJson.sequence,\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n },\n noteFont: function() {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight\n };\n },\n actorFont: function() {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight\n };\n }\n },\n gantt: {\n ...defaultConfigJson.gantt,\n tickInterval: void 0,\n useWidth: void 0\n // can probably be removed since `configKeys` already includes this\n },\n c4: {\n ...defaultConfigJson.c4,\n useWidth: void 0,\n personFont: function() {\n return {\n fontFamily: this.personFontFamily,\n fontSize: this.personFontSize,\n fontWeight: this.personFontWeight\n };\n },\n external_personFont: function() {\n return {\n fontFamily: this.external_personFontFamily,\n fontSize: this.external_personFontSize,\n fontWeight: this.external_personFontWeight\n };\n },\n systemFont: function() {\n return {\n fontFamily: this.systemFontFamily,\n fontSize: this.systemFontSize,\n fontWeight: this.systemFontWeight\n };\n },\n external_systemFont: function() {\n return {\n fontFamily: this.external_systemFontFamily,\n fontSize: this.external_systemFontSize,\n fontWeight: this.external_systemFontWeight\n };\n },\n system_dbFont: function() {\n return {\n fontFamily: this.system_dbFontFamily,\n fontSize: this.system_dbFontSize,\n fontWeight: this.system_dbFontWeight\n };\n },\n external_system_dbFont: function() {\n return {\n fontFamily: this.external_system_dbFontFamily,\n fontSize: this.external_system_dbFontSize,\n fontWeight: this.external_system_dbFontWeight\n };\n },\n system_queueFont: function() {\n return {\n fontFamily: this.system_queueFontFamily,\n fontSize: this.system_queueFontSize,\n fontWeight: this.system_queueFontWeight\n };\n },\n external_system_queueFont: function() {\n return {\n fontFamily: this.external_system_queueFontFamily,\n fontSize: this.external_system_queueFontSize,\n fontWeight: this.external_system_queueFontWeight\n };\n },\n containerFont: function() {\n return {\n fontFamily: this.containerFontFamily,\n fontSize: this.containerFontSize,\n fontWeight: this.containerFontWeight\n };\n },\n external_containerFont: function() {\n return {\n fontFamily: this.external_containerFontFamily,\n fontSize: this.external_containerFontSize,\n fontWeight: this.external_containerFontWeight\n };\n },\n container_dbFont: function() {\n return {\n fontFamily: this.container_dbFontFamily,\n fontSize: this.container_dbFontSize,\n fontWeight: this.container_dbFontWeight\n };\n },\n external_container_dbFont: function() {\n return {\n fontFamily: this.external_container_dbFontFamily,\n fontSize: this.external_container_dbFontSize,\n fontWeight: this.external_container_dbFontWeight\n };\n },\n container_queueFont: function() {\n return {\n fontFamily: this.container_queueFontFamily,\n fontSize: this.container_queueFontSize,\n fontWeight: this.container_queueFontWeight\n };\n },\n external_container_queueFont: function() {\n return {\n fontFamily: this.external_container_queueFontFamily,\n fontSize: this.external_container_queueFontSize,\n fontWeight: this.external_container_queueFontWeight\n };\n },\n componentFont: function() {\n return {\n fontFamily: this.componentFontFamily,\n fontSize: this.componentFontSize,\n fontWeight: this.componentFontWeight\n };\n },\n external_componentFont: function() {\n return {\n fontFamily: this.external_componentFontFamily,\n fontSize: this.external_componentFontSize,\n fontWeight: this.external_componentFontWeight\n };\n },\n component_dbFont: function() {\n return {\n fontFamily: this.component_dbFontFamily,\n fontSize: this.component_dbFontSize,\n fontWeight: this.component_dbFontWeight\n };\n },\n external_component_dbFont: function() {\n return {\n fontFamily: this.external_component_dbFontFamily,\n fontSize: this.external_component_dbFontSize,\n fontWeight: this.external_component_dbFontWeight\n };\n },\n component_queueFont: function() {\n return {\n fontFamily: this.component_queueFontFamily,\n fontSize: this.component_queueFontSize,\n fontWeight: this.component_queueFontWeight\n };\n },\n external_component_queueFont: function() {\n return {\n fontFamily: this.external_component_queueFontFamily,\n fontSize: this.external_component_queueFontSize,\n fontWeight: this.external_component_queueFontWeight\n };\n },\n boundaryFont: function() {\n return {\n fontFamily: this.boundaryFontFamily,\n fontSize: this.boundaryFontSize,\n fontWeight: this.boundaryFontWeight\n };\n },\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n }\n },\n pie: {\n ...defaultConfigJson.pie,\n useWidth: 984\n },\n requirement: {\n ...defaultConfigJson.requirement,\n useWidth: void 0\n },\n gitGraph: {\n ...defaultConfigJson.gitGraph,\n // TODO: This is a temporary override for `gitGraph`, since every other\n // diagram does have `useMaxWidth`, but instead sets it to `true`.\n // Should we set this to `true` instead?\n useMaxWidth: false\n },\n sankey: {\n ...defaultConfigJson.sankey,\n // this is false, unlike every other diagram (other than gitGraph)\n // TODO: can we make this default to `true` instead?\n useMaxWidth: false\n }\n};\nconst keyify = (obj, prefix = \"\") => Object.keys(obj).reduce((res, el) => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === \"object\" && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], \"\")];\n }\n return [...res, prefix + el];\n}, []);\nconst configKeys = new Set(keyify(config, \"\"));\nconst defaultConfig$1 = config;\nconst sanitizeDirective = (args) => {\n log$1.debug(\"sanitizeDirective called with\", args);\n if (typeof args !== \"object\" || args == null) {\n return;\n }\n if (Array.isArray(args)) {\n args.forEach((arg) => sanitizeDirective(arg));\n return;\n }\n for (const key of Object.keys(args)) {\n log$1.debug(\"Checking key\", key);\n if (key.startsWith(\"__\") || key.includes(\"proto\") || key.includes(\"constr\") || !configKeys.has(key) || args[key] == null) {\n log$1.debug(\"sanitize deleting key: \", key);\n delete args[key];\n continue;\n }\n if (typeof args[key] === \"object\") {\n log$1.debug(\"sanitizing object\", key);\n sanitizeDirective(args[key]);\n continue;\n }\n const cssMatchers = [\"themeCSS\", \"fontFamily\", \"altFontFamily\"];\n for (const cssKey of cssMatchers) {\n if (key.includes(cssKey)) {\n log$1.debug(\"sanitizing css option\", key);\n args[key] = sanitizeCss(args[key]);\n }\n }\n }\n if (args.themeVariables) {\n for (const k of Object.keys(args.themeVariables)) {\n const val = args.themeVariables[k];\n if ((val == null ? void 0 : val.match) && !val.match(/^[\\d \"#%(),.;A-Za-z]+$/)) {\n args.themeVariables[k] = \"\";\n }\n }\n }\n log$1.debug(\"After sanitization\", args);\n};\nconst sanitizeCss = (str2) => {\n let startCnt = 0;\n let endCnt = 0;\n for (const element of str2) {\n if (startCnt < endCnt) {\n return \"{ /* ERROR: Unbalanced CSS */ }\";\n }\n if (element === \"{\") {\n startCnt++;\n } else if (element === \"}\") {\n endCnt++;\n }\n }\n if (startCnt !== endCnt) {\n return \"{ /* ERROR: Unbalanced CSS */ }\";\n }\n return str2;\n};\nconst frontMatterRegex = /^-{3}\\s*[\\n\\r](.*?)[\\n\\r]-{3}\\s*[\\n\\r]+/s;\nconst directiveRegex = /%{2}{\\s*(?:(\\w+)\\s*:|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nconst anyCommentRegex = /\\s*%%.*\\n/gm;\nclass UnknownDiagramError extends Error {\n constructor(message) {\n super(message);\n this.name = \"UnknownDiagramError\";\n }\n}\nconst detectors = {};\nconst detectType = function(text, config2) {\n text = text.replace(frontMatterRegex, \"\").replace(directiveRegex, \"\").replace(anyCommentRegex, \"\\n\");\n for (const [key, { detector: detector2 }] of Object.entries(detectors)) {\n const diagram2 = detector2(text, config2);\n if (diagram2) {\n return key;\n }\n }\n throw new UnknownDiagramError(\n `No diagram type detected matching given configuration for text: ${text}`\n );\n};\nconst registerLazyLoadedDiagrams = (...diagrams2) => {\n for (const { id: id2, detector: detector2, loader: loader2 } of diagrams2) {\n addDetector(id2, detector2, loader2);\n }\n};\nconst addDetector = (key, detector2, loader2) => {\n if (detectors[key]) {\n log$1.error(`Detector with key ${key} already exists`);\n } else {\n detectors[key] = { detector: detector2, loader: loader2 };\n }\n log$1.debug(`Detector with key ${key} added${loader2 ? \" with loader\" : \"\"}`);\n};\nconst getDiagramLoader = (key) => {\n return detectors[key].loader;\n};\nconst assignWithDepth = (dst, src, { depth = 2, clobber = false } = {}) => {\n const config2 = { depth, clobber };\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach((s) => assignWithDepth(dst, s, config2));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach((s) => {\n if (!dst.includes(s)) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (dst === void 0 || depth <= 0) {\n if (dst !== void 0 && dst !== null && typeof dst === \"object\" && typeof src === \"object\") {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (src !== void 0 && typeof dst === \"object\" && typeof src === \"object\") {\n Object.keys(src).forEach((key) => {\n if (typeof src[key] === \"object\" && (dst[key] === void 0 || typeof dst[key] === \"object\")) {\n if (dst[key] === void 0) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || typeof dst[key] !== \"object\" && typeof src[key] !== \"object\") {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\nconst assignWithDepth$1 = assignWithDepth;\nconst ZERO_WIDTH_SPACE = \"\u200B\";\nconst d3CurveTypes = {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBumpX,\n curveBumpY,\n curveBundle,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCardinal,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveCatmullRom,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore\n};\nconst directiveWithoutOpen = /\\s*(?:(\\w+)(?=:):|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nconst detectInit = function(text, config2) {\n const inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n const args = inits.map((init2) => init2.args);\n sanitizeDirective(args);\n results = assignWithDepth$1(results, [...args]);\n } else {\n results = inits.args;\n }\n if (!results) {\n return;\n }\n let type2 = detectType(text, config2);\n const prop = \"config\";\n if (results[prop] !== void 0) {\n if (type2 === \"flowchart-v2\") {\n type2 = \"flowchart\";\n }\n results[type2] = results[prop];\n delete results[prop];\n }\n return results;\n};\nconst detectDirective = function(text, type2 = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\n`,\n \"ig\"\n );\n text = text.trim().replace(commentWithoutDirectives, \"\").replace(/'/gm, '\"');\n log$1.debug(\n `Detecting diagram directive${type2 !== null ? \" type:\" + type2 : \"\"} based on the text:${text}`\n );\n let match;\n const result = [];\n while ((match = directiveRegex.exec(text)) !== null) {\n if (match.index === directiveRegex.lastIndex) {\n directiveRegex.lastIndex++;\n }\n if (match && !type2 || type2 && match[1] && match[1].match(type2) || type2 && match[2] && match[2].match(type2)) {\n const type22 = match[1] ? match[1] : match[2];\n const args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type: type22, args });\n }\n }\n if (result.length === 0) {\n return { type: text, args: null };\n }\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n log$1.error(\n `ERROR: ${error.message} - Unable to parse directive type: '${type2}' based on the text: '${text}'`\n );\n return { type: void 0, args: null };\n }\n};\nconst removeDirectives = function(text) {\n return text.replace(directiveRegex, \"\");\n};\nconst isSubstringInArray = function(str2, arr) {\n for (const [i, element] of arr.entries()) {\n if (element.match(str2)) {\n return i;\n }\n }\n return -1;\n};\nfunction interpolateToCurve(interpolate, defaultCurve) {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] ?? defaultCurve;\n}\nfunction formatUrl(linkStr, config2) {\n const url = linkStr.trim();\n if (!url) {\n return void 0;\n }\n if (config2.securityLevel !== \"loose\") {\n return sanitizeUrl(url);\n }\n return url;\n}\nconst runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split(\".\");\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) {\n log$1.error(`Function name: ${functionName} not found in window`);\n return;\n }\n }\n obj[fnName](...params);\n};\nfunction distance(p1, p2) {\n if (!p1 || !p2) {\n return 0;\n }\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\nfunction traverseEdge(points) {\n let prevPoint;\n let totalDistance = 0;\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n const remainingDistance = totalDistance / 2;\n return calculatePoint(points, remainingDistance);\n}\nfunction calcLabelPosition(points) {\n if (points.length === 1) {\n return points[0];\n }\n return traverseEdge(points);\n}\nconst roundNumber = (num, precision = 2) => {\n const factor = Math.pow(10, precision);\n return Math.round(num * factor) / factor;\n};\nconst calculatePoint = (points, distanceToTraverse) => {\n let prevPoint = void 0;\n let remainingDistance = distanceToTraverse;\n for (const point of points) {\n if (prevPoint) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) {\n return prevPoint;\n }\n if (distanceRatio >= 1) {\n return { x: point.x, y: point.y };\n }\n if (distanceRatio > 0 && distanceRatio < 1) {\n return {\n x: roundNumber((1 - distanceRatio) * prevPoint.x + distanceRatio * point.x, 5),\n y: roundNumber((1 - distanceRatio) * prevPoint.y + distanceRatio * point.y, 5)\n };\n }\n }\n }\n prevPoint = point;\n }\n throw new Error(\"Could not find a suitable point for the given distance\");\n};\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n log$1.info(`our points ${JSON.stringify(points)}`);\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n const distanceToCardinalityPoint = 25;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n const d = isRelationTypePresent ? 10 : 5;\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\nfunction calcTerminalLabelPosition(terminalMarkerSize, position, _points) {\n const points = structuredClone(_points);\n log$1.info(\"our points\", points);\n if (position !== \"start_left\" && position !== \"start_right\") {\n points.reverse();\n }\n const distanceToCardinalityPoint = 25 + terminalMarkerSize;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n const d = 10 + terminalMarkerSize * 0.5;\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n if (position === \"start_left\") {\n cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n } else if (position === \"end_right\") {\n cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n } else if (position === \"end_left\") {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n } else {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n }\n return cardinalityPosition;\n}\nfunction getStylesFromArray(arr) {\n let style = \"\";\n let labelStyle = \"\";\n for (const element of arr) {\n if (element !== void 0) {\n if (element.startsWith(\"color:\") || element.startsWith(\"text-align:\")) {\n labelStyle = labelStyle + element + \";\";\n } else {\n style = style + element + \";\";\n }\n }\n }\n return { style, labelStyle };\n}\nlet cnt = 0;\nconst generateId = () => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n};\nfunction makeRandomHex(length) {\n let result = \"\";\n const characters = \"0123456789abcdef\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\nconst random = (options) => {\n return makeRandomHex(options.length);\n};\nconst getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n anchor: \"start\",\n style: \"#666\",\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: void 0,\n text: \"\"\n };\n};\nconst drawSimpleText = function(elem, textData) {\n const nText = textData.text.replace(common$1.lineBreakRegex, \" \");\n const [, _fontSizePx] = parseFontSize(textData.fontSize);\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.style(\"text-anchor\", textData.anchor);\n textElem.style(\"font-family\", textData.fontFamily);\n textElem.style(\"font-size\", _fontSizePx);\n textElem.style(\"font-weight\", textData.fontWeight);\n textElem.attr(\"fill\", textData.fill);\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x + textData.textMargin * 2);\n span.attr(\"fill\", textData.fill);\n span.text(nText);\n return textElem;\n};\nconst wrapLabel = memoize(\n (label, maxWidth, config2) => {\n if (!label) {\n return label;\n }\n config2 = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", joinWith: \"
\" },\n config2\n );\n if (common$1.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(\" \");\n const completedLines = [];\n let nextLine = \"\";\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config2);\n const nextLineLength = calculateTextWidth(nextLine, config2);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, \"-\", config2);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(\" \");\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter((line) => line !== \"\").join(config2.joinWith);\n },\n (label, maxWidth, config2) => `${label}${maxWidth}${config2.fontSize}${config2.fontWeight}${config2.fontFamily}${config2.joinWith}`\n);\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = \"-\", config2) => {\n config2 = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", margin: 0 },\n config2\n );\n const characters = [...word];\n const lines = [];\n let currentLine = \"\";\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config2);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = \"\";\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = \"-\", config2) => `${word}${maxWidth}${hyphenCharacter}${config2.fontSize}${config2.fontWeight}${config2.fontFamily}`\n);\nfunction calculateTextHeight(text, config2) {\n return calculateTextDimensions(text, config2).height;\n}\nfunction calculateTextWidth(text, config2) {\n return calculateTextDimensions(text, config2).width;\n}\nconst calculateTextDimensions = memoize(\n (text, config2) => {\n const { fontSize = 12, fontFamily = \"Arial\", fontWeight = 400 } = config2;\n if (!text) {\n return { width: 0, height: 0 };\n }\n const [, _fontSizePx] = parseFontSize(fontSize);\n const fontFamilies = [\"sans-serif\", fontFamily];\n const lines = text.split(common$1.lineBreakRegex);\n const dims = [];\n const body = select(\"body\");\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n const g = body.append(\"svg\");\n for (const fontFamily2 of fontFamilies) {\n let cHeight = 0;\n const dim = { width: 0, height: 0, lineHeight: 0 };\n for (const line of lines) {\n const textObj = getTextObj();\n textObj.text = line || ZERO_WIDTH_SPACE;\n const textElem = drawSimpleText(g, textObj).style(\"font-size\", _fontSizePx).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily2);\n const bBox = (textElem._groups || textElem)[0][0].getBBox();\n if (bBox.width === 0 && bBox.height === 0) {\n throw new Error(\"svg element not in render tree\");\n }\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cHeight = Math.round(bBox.height);\n dim.height += cHeight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cHeight));\n }\n dims.push(dim);\n }\n g.remove();\n const index = isNaN(dims[1].height) || isNaN(dims[1].width) || isNaN(dims[1].lineHeight) || dims[0].height > dims[1].height && dims[0].width > dims[1].width && dims[0].lineHeight > dims[1].lineHeight ? 0 : 1;\n return dims[index];\n },\n (text, config2) => `${text}${config2.fontSize}${config2.fontWeight}${config2.fontFamily}`\n);\nclass InitIDGenerator {\n constructor(deterministic = false, seed) {\n this.count = 0;\n this.count = seed ? seed.length : 0;\n this.next = deterministic ? () => this.count++ : () => Date.now();\n }\n}\nlet decoder;\nconst entityDecode = function(html) {\n decoder = decoder || document.createElement(\"div\");\n html = escape(html).replace(/%26/g, \"&\").replace(/%23/g, \"#\").replace(/%3B/g, \";\");\n decoder.innerHTML = html;\n return unescape(decoder.textContent);\n};\nfunction isDetailedError(error) {\n return \"str\" in error;\n}\nconst insertTitle = (parent, cssClass, titleTopMargin, title) => {\n var _a;\n if (!title) {\n return;\n }\n const bounds = (_a = parent.node()) == null ? void 0 : _a.getBBox();\n if (!bounds) {\n return;\n }\n parent.append(\"text\").text(title).attr(\"x\", bounds.x + bounds.width / 2).attr(\"y\", -titleTopMargin).attr(\"class\", cssClass);\n};\nconst parseFontSize = (fontSize) => {\n if (typeof fontSize === \"number\") {\n return [fontSize, fontSize + \"px\"];\n }\n const fontSizeNumber = parseInt(fontSize ?? \"\", 10);\n if (Number.isNaN(fontSizeNumber)) {\n return [void 0, void 0];\n } else if (fontSize === String(fontSizeNumber)) {\n return [fontSizeNumber, fontSize + \"px\"];\n } else {\n return [fontSizeNumber, fontSize];\n }\n};\nfunction cleanAndMerge(defaultData, data) {\n return merge$1({}, defaultData, data);\n}\nconst utils = {\n assignWithDepth: assignWithDepth$1,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n cleanAndMerge,\n detectInit,\n detectDirective,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n calcTerminalLabelPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n runFunc,\n entityDecode,\n insertTitle,\n parseFontSize,\n InitIDGenerator\n};\nconst version = \"10.5.1\";\nconst defaultConfig = Object.freeze(defaultConfig$1);\nlet siteConfig = assignWithDepth$1({}, defaultConfig);\nlet configFromInitialize;\nlet directives = [];\nlet currentConfig = assignWithDepth$1({}, defaultConfig);\nconst updateCurrentConfig = (siteCfg, _directives) => {\n let cfg = assignWithDepth$1({}, siteCfg);\n let sumOfDirectives = {};\n for (const d of _directives) {\n sanitize(d);\n sumOfDirectives = assignWithDepth$1(sumOfDirectives, d);\n }\n cfg = assignWithDepth$1(cfg, sumOfDirectives);\n if (sumOfDirectives.theme && sumOfDirectives.theme in theme) {\n const tmpConfigFromInitialize = assignWithDepth$1({}, configFromInitialize);\n const themeVariables = assignWithDepth$1(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n if (cfg.theme && cfg.theme in theme) {\n cfg.themeVariables = theme[cfg.theme].getThemeVariables(themeVariables);\n }\n }\n currentConfig = cfg;\n checkConfig(currentConfig);\n return currentConfig;\n};\nconst setSiteConfig = (conf) => {\n siteConfig = assignWithDepth$1({}, defaultConfig);\n siteConfig = assignWithDepth$1(siteConfig, conf);\n if (conf.theme && theme[conf.theme]) {\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n }\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\nconst saveConfigFromInitialize = (conf) => {\n configFromInitialize = assignWithDepth$1({}, conf);\n};\nconst updateSiteConfig = (conf) => {\n siteConfig = assignWithDepth$1(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\nconst getSiteConfig = () => {\n return assignWithDepth$1({}, siteConfig);\n};\nconst setConfig = (conf) => {\n checkConfig(conf);\n assignWithDepth$1(currentConfig, conf);\n return getConfig$1();\n};\nconst getConfig$1 = () => {\n return assignWithDepth$1({}, currentConfig);\n};\nconst sanitize = (options) => {\n if (!options) {\n return;\n }\n [\"secure\", ...siteConfig.secure ?? []].forEach((key) => {\n if (Object.hasOwn(options, key)) {\n log$1.debug(`Denied attempt to modify a secure key ${key}`, options[key]);\n delete options[key];\n }\n });\n Object.keys(options).forEach((key) => {\n if (key.startsWith(\"__\")) {\n delete options[key];\n }\n });\n Object.keys(options).forEach((key) => {\n if (typeof options[key] === \"string\" && (options[key].includes(\"<\") || options[key].includes(\">\") || options[key].includes(\"url(data:\"))) {\n delete options[key];\n }\n if (typeof options[key] === \"object\") {\n sanitize(options[key]);\n }\n });\n};\nconst addDirective = (directive) => {\n sanitizeDirective(directive);\n if (directive.fontFamily && (!directive.themeVariables || !directive.themeVariables.fontFamily)) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n }\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n};\nconst reset = (config2 = siteConfig) => {\n directives = [];\n updateCurrentConfig(config2, directives);\n};\nconst ConfigWarning = {\n LAZY_LOAD_DEPRECATED: \"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.\"\n};\nconst issuedWarnings = {};\nconst issueWarning = (warning) => {\n if (issuedWarnings[warning]) {\n return;\n }\n log$1.warn(ConfigWarning[warning]);\n issuedWarnings[warning] = true;\n};\nconst checkConfig = (config2) => {\n if (!config2) {\n return;\n }\n if (config2.lazyLoadedDiagrams || config2.loadExternalDiagramsAtStartup) {\n issueWarning(\"LAZY_LOAD_DEPRECATED\");\n }\n};\nconst id$j = \"c4\";\nconst detector$j = (txt) => {\n return /^\\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);\n};\nconst loader$k = async () => {\n const { diagram: diagram2 } = await import(\"./c4Diagram-7e558229.js\");\n return { id: id$j, diagram: diagram2 };\n};\nconst plugin$h = {\n id: id$j,\n detector: detector$j,\n loader: loader$k\n};\nconst c4 = plugin$h;\nconst id$i = \"flowchart\";\nconst detector$i = (txt, config2) => {\n var _a, _b;\n if (((_a = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\" || ((_b = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _b.defaultRenderer) === \"elk\") {\n return false;\n }\n return /^\\s*graph/.test(txt);\n};\nconst loader$j = async () => {\n const { diagram: diagram2 } = await import(\"./flowDiagram-90a5ee23.js\");\n return { id: id$i, diagram: diagram2 };\n};\nconst plugin$g = {\n id: id$i,\n detector: detector$i,\n loader: loader$j\n};\nconst flowchart = plugin$g;\nconst id$h = \"flowchart-v2\";\nconst detector$h = (txt, config2) => {\n var _a, _b, _c;\n if (((_a = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _a.defaultRenderer) === \"dagre-d3\" || ((_b = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _b.defaultRenderer) === \"elk\") {\n return false;\n }\n if (/^\\s*graph/.test(txt) && ((_c = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _c.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n return /^\\s*flowchart/.test(txt);\n};\nconst loader$i = async () => {\n const { diagram: diagram2 } = await import(\"./flowDiagram-v2-eab222bb.js\");\n return { id: id$h, diagram: diagram2 };\n};\nconst plugin$f = {\n id: id$h,\n detector: detector$h,\n loader: loader$i\n};\nconst flowchartV2 = plugin$f;\nconst id$g = \"er\";\nconst detector$g = (txt) => {\n return /^\\s*erDiagram/.test(txt);\n};\nconst loader$h = async () => {\n const { diagram: diagram2 } = await import(\"./erDiagram-5b6cebf0.js\");\n return { id: id$g, diagram: diagram2 };\n};\nconst plugin$e = {\n id: id$g,\n detector: detector$g,\n loader: loader$h\n};\nconst er = plugin$e;\nconst id$f = \"gitGraph\";\nconst detector$f = (txt) => {\n return /^\\s*gitGraph/.test(txt);\n};\nconst loader$g = async () => {\n const { diagram: diagram2 } = await import(\"./gitGraphDiagram-7b32de06.js\");\n return { id: id$f, diagram: diagram2 };\n};\nconst plugin$d = {\n id: id$f,\n detector: detector$f,\n loader: loader$g\n};\nconst git = plugin$d;\nconst id$e = \"gantt\";\nconst detector$e = (txt) => {\n return /^\\s*gantt/.test(txt);\n};\nconst loader$f = async () => {\n const { diagram: diagram2 } = await import(\"./ganttDiagram-9d6d9e54.js\");\n return { id: id$e, diagram: diagram2 };\n};\nconst plugin$c = {\n id: id$e,\n detector: detector$e,\n loader: loader$f\n};\nconst gantt = plugin$c;\nconst id$d = \"info\";\nconst detector$d = (txt) => {\n return /^\\s*info/.test(txt);\n};\nconst loader$e = async () => {\n const { diagram: diagram2 } = await import(\"./infoDiagram-645befec.js\");\n return { id: id$d, diagram: diagram2 };\n};\nconst info = {\n id: id$d,\n detector: detector$d,\n loader: loader$e\n};\nconst id$c = \"pie\";\nconst detector$c = (txt) => {\n return /^\\s*pie/.test(txt);\n};\nconst loader$d = async () => {\n const { diagram: diagram2 } = await import(\"./pieDiagram-47467502.js\");\n return { id: id$c, diagram: diagram2 };\n};\nconst pie = {\n id: id$c,\n detector: detector$c,\n loader: loader$d\n};\nconst id$b = \"quadrantChart\";\nconst detector$b = (txt) => {\n return /^\\s*quadrantChart/.test(txt);\n};\nconst loader$c = async () => {\n const { diagram: diagram2 } = await import(\"./quadrantDiagram-3646f1b7.js\");\n return { id: id$b, diagram: diagram2 };\n};\nconst plugin$b = {\n id: id$b,\n detector: detector$b,\n loader: loader$c\n};\nconst quadrantChart = plugin$b;\nconst id$a = \"requirement\";\nconst detector$a = (txt) => {\n return /^\\s*requirement(Diagram)?/.test(txt);\n};\nconst loader$b = async () => {\n const { diagram: diagram2 } = await import(\"./requirementDiagram-cc8b2f2f.js\");\n return { id: id$a, diagram: diagram2 };\n};\nconst plugin$a = {\n id: id$a,\n detector: detector$a,\n loader: loader$b\n};\nconst requirement = plugin$a;\nconst id$9 = \"sequence\";\nconst detector$9 = (txt) => {\n return /^\\s*sequenceDiagram/.test(txt);\n};\nconst loader$a = async () => {\n const { diagram: diagram2 } = await import(\"./sequenceDiagram-ccb4d521.js\");\n return { id: id$9, diagram: diagram2 };\n};\nconst plugin$9 = {\n id: id$9,\n detector: detector$9,\n loader: loader$a\n};\nconst sequence = plugin$9;\nconst id$8 = \"class\";\nconst detector$8 = (txt, config2) => {\n var _a;\n if (((_a = config2 == null ? void 0 : config2.class) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return false;\n }\n return /^\\s*classDiagram/.test(txt);\n};\nconst loader$9 = async () => {\n const { diagram: diagram2 } = await import(\"./classDiagram-bfe30095.js\");\n return { id: id$8, diagram: diagram2 };\n};\nconst plugin$8 = {\n id: id$8,\n detector: detector$8,\n loader: loader$9\n};\nconst classDiagram = plugin$8;\nconst id$7 = \"classDiagram\";\nconst detector$7 = (txt, config2) => {\n var _a;\n if (/^\\s*classDiagram/.test(txt) && ((_a = config2 == null ? void 0 : config2.class) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n return /^\\s*classDiagram-v2/.test(txt);\n};\nconst loader$8 = async () => {\n const { diagram: diagram2 } = await import(\"./classDiagram-v2-3a55c922.js\");\n return { id: id$7, diagram: diagram2 };\n};\nconst plugin$7 = {\n id: id$7,\n detector: detector$7,\n loader: loader$8\n};\nconst classDiagramV2 = plugin$7;\nconst id$6 = \"state\";\nconst detector$6 = (txt, config2) => {\n var _a;\n if (((_a = config2 == null ? void 0 : config2.state) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return false;\n }\n return /^\\s*stateDiagram/.test(txt);\n};\nconst loader$7 = async () => {\n const { diagram: diagram2 } = await import(\"./stateDiagram-dac17514.js\");\n return { id: id$6, diagram: diagram2 };\n};\nconst plugin$6 = {\n id: id$6,\n detector: detector$6,\n loader: loader$7\n};\nconst state = plugin$6;\nconst id$5 = \"stateDiagram\";\nconst detector$5 = (txt, config2) => {\n var _a;\n if (/^\\s*stateDiagram-v2/.test(txt)) {\n return true;\n }\n if (/^\\s*stateDiagram/.test(txt) && ((_a = config2 == null ? void 0 : config2.state) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n return false;\n};\nconst loader$6 = async () => {\n const { diagram: diagram2 } = await import(\"./stateDiagram-v2-0255b0b2.js\");\n return { id: id$5, diagram: diagram2 };\n};\nconst plugin$5 = {\n id: id$5,\n detector: detector$5,\n loader: loader$6\n};\nconst stateV2 = plugin$5;\nconst id$4 = \"journey\";\nconst detector$4 = (txt) => {\n return /^\\s*journey/.test(txt);\n};\nconst loader$5 = async () => {\n const { diagram: diagram2 } = await import(\"./journeyDiagram-14f1468f.js\");\n return { id: id$4, diagram: diagram2 };\n};\nconst plugin$4 = {\n id: id$4,\n detector: detector$4,\n loader: loader$5\n};\nconst journey = plugin$4;\nconst selectSvgElement = (id2) => {\n var _a;\n const { securityLevel } = getConfig$1();\n let root = select(\"body\");\n if (securityLevel === \"sandbox\") {\n const sandboxElement = select(`#i${id2}`);\n const doc = ((_a = sandboxElement.node()) == null ? void 0 : _a.contentDocument) ?? document;\n root = select(doc.body);\n }\n const svg = root.select(`#${id2}`);\n return svg;\n};\nconst d3Attrs = function(d3Elem, attrs) {\n for (let attr of attrs) {\n d3Elem.attr(attr[0], attr[1]);\n }\n};\nconst calculateSvgSizeAttrs = function(height, width, useMaxWidth) {\n let attrs = /* @__PURE__ */ new Map();\n if (useMaxWidth) {\n attrs.set(\"width\", \"100%\");\n attrs.set(\"style\", `max-width: ${width}px;`);\n } else {\n attrs.set(\"height\", height);\n attrs.set(\"width\", width);\n }\n return attrs;\n};\nconst configureSvgSize = function(svgElem, height, width, useMaxWidth) {\n const attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);\n d3Attrs(svgElem, attrs);\n};\nconst setupGraphViewbox$1 = function(graph, svgElem, padding, useMaxWidth) {\n const svgBounds = svgElem.node().getBBox();\n const sWidth = svgBounds.width;\n const sHeight = svgBounds.height;\n log$1.info(`SVG bounds: ${sWidth}x${sHeight}`, svgBounds);\n let width = 0;\n let height = 0;\n log$1.info(`Graph bounds: ${width}x${height}`, graph);\n width = sWidth + padding * 2;\n height = sHeight + padding * 2;\n log$1.info(`Calculated bounds: ${width}x${height}`);\n configureSvgSize(svgElem, height, width, useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${svgBounds.width + 2 * padding} ${svgBounds.height + 2 * padding}`;\n svgElem.attr(\"viewBox\", vBox);\n};\nconst draw = (_text, id2, version2) => {\n log$1.debug(\"renering svg for syntax error\\n\");\n const svg = selectSvgElement(id2);\n svg.attr(\"viewBox\", \"0 0 2412 512\");\n configureSvgSize(svg, 100, 512, true);\n const g = svg.append(\"g\");\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z\"\n );\n g.append(\"text\").attr(\"class\", \"error-text\").attr(\"x\", 1440).attr(\"y\", 250).attr(\"font-size\", \"150px\").style(\"text-anchor\", \"middle\").text(\"Syntax error in text\");\n g.append(\"text\").attr(\"class\", \"error-text\").attr(\"x\", 1250).attr(\"y\", 400).attr(\"font-size\", \"100px\").style(\"text-anchor\", \"middle\").text(`mermaid version ${version2}`);\n};\nconst renderer = { draw };\nconst errorRenderer = renderer;\nconst diagram = {\n db: {},\n renderer,\n parser: {\n parser: { yy: {} },\n parse: () => {\n return;\n }\n }\n};\nconst errorDiagram = diagram;\nconst id$3 = \"flowchart-elk\";\nconst detector$3 = (txt, config2) => {\n var _a;\n if (\n // If diagram explicitly states flowchart-elk\n /^\\s*flowchart-elk/.test(txt) || // If a flowchart/graph diagram has their default renderer set to elk\n /^\\s*flowchart|graph/.test(txt) && ((_a = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _a.defaultRenderer) === \"elk\"\n ) {\n return true;\n }\n return false;\n};\nconst loader$4 = async () => {\n const { diagram: diagram2 } = await import(\"./flowchart-elk-definition-4ac3371a.js\");\n return { id: id$3, diagram: diagram2 };\n};\nconst plugin$3 = {\n id: id$3,\n detector: detector$3,\n loader: loader$4\n};\nconst flowchartElk = plugin$3;\nconst id$2 = \"timeline\";\nconst detector$2 = (txt) => {\n return /^\\s*timeline/.test(txt);\n};\nconst loader$3 = async () => {\n const { diagram: diagram2 } = await import(\"./timeline-definition-2815a264.js\");\n return { id: id$2, diagram: diagram2 };\n};\nconst plugin$2 = {\n id: id$2,\n detector: detector$2,\n loader: loader$3\n};\nconst timeline = plugin$2;\nconst id$1 = \"mindmap\";\nconst detector$1 = (txt) => {\n return /^\\s*mindmap/.test(txt);\n};\nconst loader$2 = async () => {\n const { diagram: diagram2 } = await import(\"./mindmap-definition-9a80f489.js\");\n return { id: id$1, diagram: diagram2 };\n};\nconst plugin$1 = {\n id: id$1,\n detector: detector$1,\n loader: loader$2\n};\nconst mindmap = plugin$1;\nconst id = \"sankey\";\nconst detector = (txt) => {\n return /^\\s*sankey-beta/.test(txt);\n};\nconst loader$1 = async () => {\n const { diagram: diagram2 } = await import(\"./sankeyDiagram-31fcfff2.js\");\n return { id, diagram: diagram2 };\n};\nconst plugin = {\n id,\n detector,\n loader: loader$1\n};\nconst sankey = plugin;\nconst themes = {};\nconst getStyles = (type2, userStyles, options) => {\n let diagramStyles = \"\";\n if (type2 in themes && themes[type2]) {\n diagramStyles = themes[type2](options);\n } else {\n log$1.warn(`No theme found for ${type2}`);\n }\n return ` & {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${options.errorBkgColor};\n }\n & .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 2px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n }\n & .marker.cross {\n stroke: ${options.lineColor};\n }\n\n & svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n ${diagramStyles}\n\n ${userStyles}\n`;\n};\nconst addStylesForDiagram = (type2, diagramTheme) => {\n if (diagramTheme !== void 0) {\n themes[type2] = diagramTheme;\n }\n};\nconst getStyles$1 = getStyles;\nlet accTitle = \"\";\nlet diagramTitle = \"\";\nlet accDescription = \"\";\nconst sanitizeText$1 = (txt) => sanitizeText$2(txt, getConfig$1());\nconst clear = () => {\n accTitle = \"\";\n accDescription = \"\";\n diagramTitle = \"\";\n};\nconst setAccTitle = (txt) => {\n accTitle = sanitizeText$1(txt).replace(/^\\s+/g, \"\");\n};\nconst getAccTitle = () => accTitle;\nconst setAccDescription = (txt) => {\n accDescription = sanitizeText$1(txt).replace(/\\n\\s+/g, \"\\n\");\n};\nconst getAccDescription = () => accDescription;\nconst setDiagramTitle = (txt) => {\n diagramTitle = sanitizeText$1(txt);\n};\nconst getDiagramTitle = () => diagramTitle;\nconst commonDb = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n clear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst log = log$1;\nconst setLogLevel = setLogLevel$1;\nconst getConfig = getConfig$1;\nconst sanitizeText = (text) => sanitizeText$2(text, getConfig());\nconst setupGraphViewbox = setupGraphViewbox$1;\nconst getCommonDb = () => {\n return commonDb;\n};\nconst diagrams = {};\nconst registerDiagram = (id2, diagram2, detector2) => {\n var _a;\n if (diagrams[id2]) {\n throw new Error(`Diagram ${id2} already registered.`);\n }\n diagrams[id2] = diagram2;\n if (detector2) {\n addDetector(id2, detector2);\n }\n addStylesForDiagram(id2, diagram2.styles);\n (_a = diagram2.injectUtils) == null ? void 0 : _a.call(\n diagram2,\n log,\n setLogLevel,\n getConfig,\n sanitizeText,\n setupGraphViewbox,\n getCommonDb(),\n () => {\n }\n );\n};\nconst getDiagram = (name) => {\n if (name in diagrams) {\n return diagrams[name];\n }\n throw new DiagramNotFoundError(name);\n};\nclass DiagramNotFoundError extends Error {\n constructor(name) {\n super(`Diagram ${name} not found.`);\n }\n}\nlet hasLoadedDiagrams = false;\nconst addDiagrams = () => {\n if (hasLoadedDiagrams) {\n return;\n }\n hasLoadedDiagrams = true;\n registerDiagram(\"error\", errorDiagram, (text) => {\n return text.toLowerCase().trim() === \"error\";\n });\n registerDiagram(\n \"---\",\n // --- diagram type may appear if YAML front-matter is not parsed correctly\n {\n db: {\n clear: () => {\n }\n },\n styles: {},\n // should never be used\n renderer: {\n draw: () => {\n }\n },\n parser: {\n parser: { yy: {} },\n parse: () => {\n throw new Error(\n \"Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks\"\n );\n }\n },\n init: () => null\n // no op\n },\n (text) => {\n return text.toLowerCase().trimStart().startsWith(\"---\");\n }\n );\n registerLazyLoadedDiagrams(\n c4,\n classDiagramV2,\n classDiagram,\n er,\n gantt,\n info,\n pie,\n requirement,\n sequence,\n flowchartElk,\n flowchartV2,\n flowchart,\n mindmap,\n timeline,\n git,\n stateV2,\n state,\n journey,\n quadrantChart,\n sankey\n );\n};\nclass Diagram {\n constructor(text, metadata = {}) {\n this.text = text;\n this.metadata = metadata;\n this.type = \"graph\";\n this.text += \"\\n\";\n const cnf = getConfig$1();\n try {\n this.type = detectType(text, cnf);\n } catch (e) {\n this.type = \"error\";\n this.detectError = e;\n }\n const diagram2 = getDiagram(this.type);\n log$1.debug(\"Type \" + this.type);\n this.db = diagram2.db;\n this.renderer = diagram2.renderer;\n this.parser = diagram2.parser;\n this.parser.parser.yy = this.db;\n this.init = diagram2.init;\n this.parse();\n }\n parse() {\n var _a, _b, _c, _d, _e;\n if (this.detectError) {\n throw this.detectError;\n }\n (_b = (_a = this.db).clear) == null ? void 0 : _b.call(_a);\n const config2 = getConfig$1();\n (_c = this.init) == null ? void 0 : _c.call(this, config2);\n if (this.metadata.title) {\n (_e = (_d = this.db).setDiagramTitle) == null ? void 0 : _e.call(_d, this.metadata.title);\n }\n this.parser.parse(this.text);\n }\n async render(id2, version2) {\n await this.renderer.draw(this.text, id2, version2, this);\n }\n getParser() {\n return this.parser;\n }\n getType() {\n return this.type;\n }\n}\nconst getDiagramFromText = async (text, metadata = {}) => {\n const type2 = detectType(text, getConfig$1());\n try {\n getDiagram(type2);\n } catch (error) {\n const loader2 = getDiagramLoader(type2);\n if (!loader2) {\n throw new UnknownDiagramError(`Diagram ${type2} not found.`);\n }\n const { id: id2, diagram: diagram2 } = await loader2();\n registerDiagram(id2, diagram2);\n }\n return new Diagram(text, metadata);\n};\nlet interactionFunctions = [];\nconst addFunction = (func) => {\n interactionFunctions.push(func);\n};\nconst attachFunctions = () => {\n interactionFunctions.forEach((f) => {\n f();\n });\n interactionFunctions = [];\n};\nconst SVG_ROLE = \"graphics-document document\";\nfunction setA11yDiagramInfo(svg, diagramType) {\n svg.attr(\"role\", SVG_ROLE);\n if (diagramType !== \"\") {\n svg.attr(\"aria-roledescription\", diagramType);\n }\n}\nfunction addSVGa11yTitleDescription(svg, a11yTitle, a11yDesc, baseId) {\n if (svg.insert === void 0) {\n return;\n }\n if (a11yDesc) {\n const descId = `chart-desc-${baseId}`;\n svg.attr(\"aria-describedby\", descId);\n svg.insert(\"desc\", \":first-child\").attr(\"id\", descId).text(a11yDesc);\n }\n if (a11yTitle) {\n const titleId = `chart-title-${baseId}`;\n svg.attr(\"aria-labelledby\", titleId);\n svg.insert(\"title\", \":first-child\").attr(\"id\", titleId).text(a11yTitle);\n }\n}\nconst cleanupComments = (text) => {\n return text.replace(/^\\s*%%(?!{)[^\\n]+\\n?/gm, \"\").trimStart();\n};\n/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */\nfunction isNothing(subject) {\n return typeof subject === \"undefined\" || subject === null;\n}\nfunction isObject(subject) {\n return typeof subject === \"object\" && subject !== null;\n}\nfunction toArray(sequence2) {\n if (Array.isArray(sequence2))\n return sequence2;\n else if (isNothing(sequence2))\n return [];\n return [sequence2];\n}\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n if (source) {\n sourceKeys = Object.keys(source);\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction repeat(string, count) {\n var result = \"\", cycle;\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n return result;\n}\nfunction isNegativeZero(number) {\n return number === 0 && Number.NEGATIVE_INFINITY === 1 / number;\n}\nvar isNothing_1 = isNothing;\nvar isObject_1 = isObject;\nvar toArray_1 = toArray;\nvar repeat_1 = repeat;\nvar isNegativeZero_1 = isNegativeZero;\nvar extend_1 = extend;\nvar common = {\n isNothing: isNothing_1,\n isObject: isObject_1,\n toArray: toArray_1,\n repeat: repeat_1,\n isNegativeZero: isNegativeZero_1,\n extend: extend_1\n};\nfunction formatError(exception2, compact) {\n var where = \"\", message = exception2.reason || \"(unknown reason)\";\n if (!exception2.mark)\n return message;\n if (exception2.mark.name) {\n where += 'in \"' + exception2.mark.name + '\" ';\n }\n where += \"(\" + (exception2.mark.line + 1) + \":\" + (exception2.mark.column + 1) + \")\";\n if (!compact && exception2.mark.snippet) {\n where += \"\\n\\n\" + exception2.mark.snippet;\n }\n return message + \" \" + where;\n}\nfunction YAMLException$1(reason, mark) {\n Error.call(this);\n this.name = \"YAMLException\";\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error().stack || \"\";\n }\n}\nYAMLException$1.prototype = Object.create(Error.prototype);\nYAMLException$1.prototype.constructor = YAMLException$1;\nYAMLException$1.prototype.toString = function toString(compact) {\n return this.name + \": \" + formatError(this, compact);\n};\nvar exception = YAMLException$1;\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = \"\";\n var tail = \"\";\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n if (position - lineStart > maxHalfLength) {\n head = \" ... \";\n lineStart = position - maxHalfLength + head.length;\n }\n if (lineEnd - position > maxHalfLength) {\n tail = \" ...\";\n lineEnd = position + maxHalfLength - tail.length;\n }\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, \"\u2192\") + tail,\n pos: position - lineStart + head.length\n // relative position\n };\n}\nfunction padStart(string, max) {\n return common.repeat(\" \", max - string.length) + string;\n}\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n if (!mark.buffer)\n return null;\n if (!options.maxLength)\n options.maxLength = 79;\n if (typeof options.indent !== \"number\")\n options.indent = 1;\n if (typeof options.linesBefore !== \"number\")\n options.linesBefore = 3;\n if (typeof options.linesAfter !== \"number\")\n options.linesAfter = 2;\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [0];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n while (match = re.exec(mark.buffer)) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n if (foundLineNo < 0)\n foundLineNo = lineStarts.length - 1;\n var result = \"\", i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0)\n break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(\" \", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\" + result;\n }\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(\" \", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n result += common.repeat(\"-\", options.indent + lineNoLength + 3 + line.pos) + \"^\\n\";\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length)\n break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(\" \", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n }\n return result.replace(/\\n$/, \"\");\n}\nvar snippet = makeSnippet;\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n \"kind\",\n \"multi\",\n \"resolve\",\n \"construct\",\n \"instanceOf\",\n \"predicate\",\n \"represent\",\n \"representName\",\n \"defaultStyle\",\n \"styleAliases\"\n];\nvar YAML_NODE_KINDS = [\n \"scalar\",\n \"sequence\",\n \"mapping\"\n];\nfunction compileStyleAliases(map2) {\n var result = {};\n if (map2 !== null) {\n Object.keys(map2).forEach(function(style) {\n map2[style].forEach(function(alias) {\n result[String(alias)] = style;\n });\n });\n }\n return result;\n}\nfunction Type$1(tag, options) {\n options = options || {};\n Object.keys(options).forEach(function(name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new exception('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n this.options = options;\n this.tag = tag;\n this.kind = options[\"kind\"] || null;\n this.resolve = options[\"resolve\"] || function() {\n return true;\n };\n this.construct = options[\"construct\"] || function(data) {\n return data;\n };\n this.instanceOf = options[\"instanceOf\"] || null;\n this.predicate = options[\"predicate\"] || null;\n this.represent = options[\"represent\"] || null;\n this.representName = options[\"representName\"] || null;\n this.defaultStyle = options[\"defaultStyle\"] || null;\n this.multi = options[\"multi\"] || false;\n this.styleAliases = compileStyleAliases(options[\"styleAliases\"] || null);\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new exception('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\nvar type = Type$1;\nfunction compileList(schema2, name) {\n var result = [];\n schema2[name].forEach(function(currentType) {\n var newIndex = result.length;\n result.forEach(function(previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) {\n newIndex = previousIndex;\n }\n });\n result[newIndex] = currentType;\n });\n return result;\n}\nfunction compileMap() {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n function collectType(type2) {\n if (type2.multi) {\n result.multi[type2.kind].push(type2);\n result.multi[\"fallback\"].push(type2);\n } else {\n result[type2.kind][type2.tag] = result[\"fallback\"][type2.tag] = type2;\n }\n }\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\nfunction Schema$1(definition) {\n return this.extend(definition);\n}\nSchema$1.prototype.extend = function extend2(definition) {\n var implicit = [];\n var explicit = [];\n if (definition instanceof type) {\n explicit.push(definition);\n } else if (Array.isArray(definition)) {\n explicit = explicit.concat(definition);\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n if (definition.implicit)\n implicit = implicit.concat(definition.implicit);\n if (definition.explicit)\n explicit = explicit.concat(definition.explicit);\n } else {\n throw new exception(\"Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })\");\n }\n implicit.forEach(function(type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n }\n if (type$1.loadKind && type$1.loadKind !== \"scalar\") {\n throw new exception(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\");\n }\n if (type$1.multi) {\n throw new exception(\"There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.\");\n }\n });\n explicit.forEach(function(type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n }\n });\n var result = Object.create(Schema$1.prototype);\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n result.compiledImplicit = compileList(result, \"implicit\");\n result.compiledExplicit = compileList(result, \"explicit\");\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n return result;\n};\nvar schema = Schema$1;\nvar str = new type(\"tag:yaml.org,2002:str\", {\n kind: \"scalar\",\n construct: function(data) {\n return data !== null ? data : \"\";\n }\n});\nvar seq = new type(\"tag:yaml.org,2002:seq\", {\n kind: \"sequence\",\n construct: function(data) {\n return data !== null ? data : [];\n }\n});\nvar map = new type(\"tag:yaml.org,2002:map\", {\n kind: \"mapping\",\n construct: function(data) {\n return data !== null ? data : {};\n }\n});\nvar failsafe = new schema({\n explicit: [\n str,\n seq,\n map\n ]\n});\nfunction resolveYamlNull(data) {\n if (data === null)\n return true;\n var max = data.length;\n return max === 1 && data === \"~\" || max === 4 && (data === \"null\" || data === \"Null\" || data === \"NULL\");\n}\nfunction constructYamlNull() {\n return null;\n}\nfunction isNull(object) {\n return object === null;\n}\nvar _null = new type(\"tag:yaml.org,2002:null\", {\n kind: \"scalar\",\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function() {\n return \"~\";\n },\n lowercase: function() {\n return \"null\";\n },\n uppercase: function() {\n return \"NULL\";\n },\n camelcase: function() {\n return \"Null\";\n },\n empty: function() {\n return \"\";\n }\n },\n defaultStyle: \"lowercase\"\n});\nfunction resolveYamlBoolean(data) {\n if (data === null)\n return false;\n var max = data.length;\n return max === 4 && (data === \"true\" || data === \"True\" || data === \"TRUE\") || max === 5 && (data === \"false\" || data === \"False\" || data === \"FALSE\");\n}\nfunction constructYamlBoolean(data) {\n return data === \"true\" || data === \"True\" || data === \"TRUE\";\n}\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === \"[object Boolean]\";\n}\nvar bool = new type(\"tag:yaml.org,2002:bool\", {\n kind: \"scalar\",\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function(object) {\n return object ? \"true\" : \"false\";\n },\n uppercase: function(object) {\n return object ? \"TRUE\" : \"FALSE\";\n },\n camelcase: function(object) {\n return object ? \"True\" : \"False\";\n }\n },\n defaultStyle: \"lowercase\"\n});\nfunction isHexCode(c) {\n return 48 <= c && c <= 57 || 65 <= c && c <= 70 || 97 <= c && c <= 102;\n}\nfunction isOctCode(c) {\n return 48 <= c && c <= 55;\n}\nfunction isDecCode(c) {\n return 48 <= c && c <= 57;\n}\nfunction resolveYamlInteger(data) {\n if (data === null)\n return false;\n var max = data.length, index = 0, hasDigits = false, ch;\n if (!max)\n return false;\n ch = data[index];\n if (ch === \"-\" || ch === \"+\") {\n ch = data[++index];\n }\n if (ch === \"0\") {\n if (index + 1 === max)\n return true;\n ch = data[++index];\n if (ch === \"b\") {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (ch !== \"0\" && ch !== \"1\")\n return false;\n hasDigits = true;\n }\n return hasDigits && ch !== \"_\";\n }\n if (ch === \"x\") {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (!isHexCode(data.charCodeAt(index)))\n return false;\n hasDigits = true;\n }\n return hasDigits && ch !== \"_\";\n }\n if (ch === \"o\") {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (!isOctCode(data.charCodeAt(index)))\n return false;\n hasDigits = true;\n }\n return hasDigits && ch !== \"_\";\n }\n }\n if (ch === \"_\")\n return false;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n if (!hasDigits || ch === \"_\")\n return false;\n return true;\n}\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n if (value.indexOf(\"_\") !== -1) {\n value = value.replace(/_/g, \"\");\n }\n ch = value[0];\n if (ch === \"-\" || ch === \"+\") {\n if (ch === \"-\")\n sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n if (value === \"0\")\n return 0;\n if (ch === \"0\") {\n if (value[1] === \"b\")\n return sign * parseInt(value.slice(2), 2);\n if (value[1] === \"x\")\n return sign * parseInt(value.slice(2), 16);\n if (value[1] === \"o\")\n return sign * parseInt(value.slice(2), 8);\n }\n return sign * parseInt(value, 10);\n}\nfunction isInteger(object) {\n return Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 === 0 && !common.isNegativeZero(object));\n}\nvar int = new type(\"tag:yaml.org,2002:int\", {\n kind: \"scalar\",\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function(obj) {\n return obj >= 0 ? \"0b\" + obj.toString(2) : \"-0b\" + obj.toString(2).slice(1);\n },\n octal: function(obj) {\n return obj >= 0 ? \"0o\" + obj.toString(8) : \"-0o\" + obj.toString(8).slice(1);\n },\n decimal: function(obj) {\n return obj.toString(10);\n },\n /* eslint-disable max-len */\n hexadecimal: function(obj) {\n return obj >= 0 ? \"0x\" + obj.toString(16).toUpperCase() : \"-0x\" + obj.toString(16).toUpperCase().slice(1);\n }\n },\n defaultStyle: \"decimal\",\n styleAliases: {\n binary: [2, \"bin\"],\n octal: [8, \"oct\"],\n decimal: [10, \"dec\"],\n hexadecimal: [16, \"hex\"]\n }\n});\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n \"^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\"\n);\nfunction resolveYamlFloat(data) {\n if (data === null)\n return false;\n if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === \"_\") {\n return false;\n }\n return true;\n}\nfunction constructYamlFloat(data) {\n var value, sign;\n value = data.replace(/_/g, \"\").toLowerCase();\n sign = value[0] === \"-\" ? -1 : 1;\n if (\"+-\".indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n if (value === \".inf\") {\n return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n } else if (value === \".nan\") {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\nfunction representYamlFloat(object, style) {\n var res;\n if (isNaN(object)) {\n switch (style) {\n case \"lowercase\":\n return \".nan\";\n case \"uppercase\":\n return \".NAN\";\n case \"camelcase\":\n return \".NaN\";\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case \"lowercase\":\n return \".inf\";\n case \"uppercase\":\n return \".INF\";\n case \"camelcase\":\n return \".Inf\";\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case \"lowercase\":\n return \"-.inf\";\n case \"uppercase\":\n return \"-.INF\";\n case \"camelcase\":\n return \"-.Inf\";\n }\n } else if (common.isNegativeZero(object)) {\n return \"-0.0\";\n }\n res = object.toString(10);\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace(\"e\", \".e\") : res;\n}\nfunction isFloat(object) {\n return Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 !== 0 || common.isNegativeZero(object));\n}\nvar float = new type(\"tag:yaml.org,2002:float\", {\n kind: \"scalar\",\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: \"lowercase\"\n});\nvar json = failsafe.extend({\n implicit: [\n _null,\n bool,\n int,\n float\n ]\n});\nvar core = json;\nvar YAML_DATE_REGEXP = new RegExp(\n \"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"\n);\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n \"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\"\n);\nfunction resolveYamlTimestamp(data) {\n if (data === null)\n return false;\n if (YAML_DATE_REGEXP.exec(data) !== null)\n return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null)\n return true;\n return false;\n}\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date;\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null)\n match = YAML_TIMESTAMP_REGEXP.exec(data);\n if (match === null)\n throw new Error(\"Date resolve error\");\n year = +match[1];\n month = +match[2] - 1;\n day = +match[3];\n if (!match[4]) {\n return new Date(Date.UTC(year, month, day));\n }\n hour = +match[4];\n minute = +match[5];\n second = +match[6];\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) {\n fraction += \"0\";\n }\n fraction = +fraction;\n }\n if (match[9]) {\n tz_hour = +match[10];\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 6e4;\n if (match[9] === \"-\")\n delta = -delta;\n }\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n if (delta)\n date.setTime(date.getTime() - delta);\n return date;\n}\nfunction representYamlTimestamp(object) {\n return object.toISOString();\n}\nvar timestamp = new type(\"tag:yaml.org,2002:timestamp\", {\n kind: \"scalar\",\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\nfunction resolveYamlMerge(data) {\n return data === \"<<\" || data === null;\n}\nvar merge = new type(\"tag:yaml.org,2002:merge\", {\n kind: \"scalar\",\n resolve: resolveYamlMerge\n});\nvar BASE64_MAP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r\";\nfunction resolveYamlBinary(data) {\n if (data === null)\n return false;\n var code, idx, bitlen = 0, max = data.length, map2 = BASE64_MAP;\n for (idx = 0; idx < max; idx++) {\n code = map2.indexOf(data.charAt(idx));\n if (code > 64)\n continue;\n if (code < 0)\n return false;\n bitlen += 6;\n }\n return bitlen % 8 === 0;\n}\nfunction constructYamlBinary(data) {\n var idx, tailbits, input = data.replace(/[\\r\\n=]/g, \"\"), max = input.length, map2 = BASE64_MAP, bits = 0, result = [];\n for (idx = 0; idx < max; idx++) {\n if (idx % 4 === 0 && idx) {\n result.push(bits >> 16 & 255);\n result.push(bits >> 8 & 255);\n result.push(bits & 255);\n }\n bits = bits << 6 | map2.indexOf(input.charAt(idx));\n }\n tailbits = max % 4 * 6;\n if (tailbits === 0) {\n result.push(bits >> 16 & 255);\n result.push(bits >> 8 & 255);\n result.push(bits & 255);\n } else if (tailbits === 18) {\n result.push(bits >> 10 & 255);\n result.push(bits >> 2 & 255);\n } else if (tailbits === 12) {\n result.push(bits >> 4 & 255);\n }\n return new Uint8Array(result);\n}\nfunction representYamlBinary(object) {\n var result = \"\", bits = 0, idx, tail, max = object.length, map2 = BASE64_MAP;\n for (idx = 0; idx < max; idx++) {\n if (idx % 3 === 0 && idx) {\n result += map2[bits >> 18 & 63];\n result += map2[bits >> 12 & 63];\n result += map2[bits >> 6 & 63];\n result += map2[bits & 63];\n }\n bits = (bits << 8) + object[idx];\n }\n tail = max % 3;\n if (tail === 0) {\n result += map2[bits >> 18 & 63];\n result += map2[bits >> 12 & 63];\n result += map2[bits >> 6 & 63];\n result += map2[bits & 63];\n } else if (tail === 2) {\n result += map2[bits >> 10 & 63];\n result += map2[bits >> 4 & 63];\n result += map2[bits << 2 & 63];\n result += map2[64];\n } else if (tail === 1) {\n result += map2[bits >> 2 & 63];\n result += map2[bits << 4 & 63];\n result += map2[64];\n result += map2[64];\n }\n return result;\n}\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === \"[object Uint8Array]\";\n}\nvar binary = new type(\"tag:yaml.org,2002:binary\", {\n kind: \"scalar\",\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\nvar _hasOwnProperty$3 = Object.prototype.hasOwnProperty;\nvar _toString$2 = Object.prototype.toString;\nfunction resolveYamlOmap(data) {\n if (data === null)\n return true;\n var objectKeys = [], index, length, pair, pairKey, pairHasKey, object = data;\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n if (_toString$2.call(pair) !== \"[object Object]\")\n return false;\n for (pairKey in pair) {\n if (_hasOwnProperty$3.call(pair, pairKey)) {\n if (!pairHasKey)\n pairHasKey = true;\n else\n return false;\n }\n }\n if (!pairHasKey)\n return false;\n if (objectKeys.indexOf(pairKey) === -1)\n objectKeys.push(pairKey);\n else\n return false;\n }\n return true;\n}\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\nvar omap = new type(\"tag:yaml.org,2002:omap\", {\n kind: \"sequence\",\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\nvar _toString$1 = Object.prototype.toString;\nfunction resolveYamlPairs(data) {\n if (data === null)\n return true;\n var index, length, pair, keys, result, object = data;\n result = new Array(object.length);\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n if (_toString$1.call(pair) !== \"[object Object]\")\n return false;\n keys = Object.keys(pair);\n if (keys.length !== 1)\n return false;\n result[index] = [keys[0], pair[keys[0]]];\n }\n return true;\n}\nfunction constructYamlPairs(data) {\n if (data === null)\n return [];\n var index, length, pair, keys, result, object = data;\n result = new Array(object.length);\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n keys = Object.keys(pair);\n result[index] = [keys[0], pair[keys[0]]];\n }\n return result;\n}\nvar pairs = new type(\"tag:yaml.org,2002:pairs\", {\n kind: \"sequence\",\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\nvar _hasOwnProperty$2 = Object.prototype.hasOwnProperty;\nfunction resolveYamlSet(data) {\n if (data === null)\n return true;\n var key, object = data;\n for (key in object) {\n if (_hasOwnProperty$2.call(object, key)) {\n if (object[key] !== null)\n return false;\n }\n }\n return true;\n}\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\nvar set = new type(\"tag:yaml.org,2002:set\", {\n kind: \"mapping\",\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\nvar _default = core.extend({\n implicit: [\n timestamp,\n merge\n ],\n explicit: [\n binary,\n omap,\n pairs,\n set\n ]\n});\nvar _hasOwnProperty$1 = Object.prototype.hasOwnProperty;\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\nfunction _class(obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction is_EOL(c) {\n return c === 10 || c === 13;\n}\nfunction is_WHITE_SPACE(c) {\n return c === 9 || c === 32;\n}\nfunction is_WS_OR_EOL(c) {\n return c === 9 || c === 32 || c === 10 || c === 13;\n}\nfunction is_FLOW_INDICATOR(c) {\n return c === 44 || c === 91 || c === 93 || c === 123 || c === 125;\n}\nfunction fromHexCode(c) {\n var lc;\n if (48 <= c && c <= 57) {\n return c - 48;\n }\n lc = c | 32;\n if (97 <= lc && lc <= 102) {\n return lc - 97 + 10;\n }\n return -1;\n}\nfunction escapedHexLen(c) {\n if (c === 120) {\n return 2;\n }\n if (c === 117) {\n return 4;\n }\n if (c === 85) {\n return 8;\n }\n return 0;\n}\nfunction fromDecimalCode(c) {\n if (48 <= c && c <= 57) {\n return c - 48;\n }\n return -1;\n}\nfunction simpleEscapeSequence(c) {\n return c === 48 ? \"\\0\" : c === 97 ? \"\\x07\" : c === 98 ? \"\\b\" : c === 116 ? \"\t\" : c === 9 ? \"\t\" : c === 110 ? \"\\n\" : c === 118 ? \"\\v\" : c === 102 ? \"\\f\" : c === 114 ? \"\\r\" : c === 101 ? \"\\x1B\" : c === 32 ? \" \" : c === 34 ? '\"' : c === 47 ? \"/\" : c === 92 ? \"\\\\\" : c === 78 ? \"\u0085\" : c === 95 ? \"\u00A0\" : c === 76 ? \"\\u2028\" : c === 80 ? \"\\u2029\" : \"\";\n}\nfunction charFromCodepoint(c) {\n if (c <= 65535) {\n return String.fromCharCode(c);\n }\n return String.fromCharCode(\n (c - 65536 >> 10) + 55296,\n (c - 65536 & 1023) + 56320\n );\n}\nvar simpleEscapeCheck = new Array(256);\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\nfunction State$1(input, options) {\n this.input = input;\n this.filename = options[\"filename\"] || null;\n this.schema = options[\"schema\"] || _default;\n this.onWarning = options[\"onWarning\"] || null;\n this.legacy = options[\"legacy\"] || false;\n this.json = options[\"json\"] || false;\n this.listener = options[\"listener\"] || null;\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n this.firstTabInLine = -1;\n this.documents = [];\n}\nfunction generateError(state2, message) {\n var mark = {\n name: state2.filename,\n buffer: state2.input.slice(0, -1),\n // omit trailing \\0\n position: state2.position,\n line: state2.line,\n column: state2.position - state2.lineStart\n };\n mark.snippet = snippet(mark);\n return new exception(message, mark);\n}\nfunction throwError(state2, message) {\n throw generateError(state2, message);\n}\nfunction throwWarning(state2, message) {\n if (state2.onWarning) {\n state2.onWarning.call(null, generateError(state2, message));\n }\n}\nvar directiveHandlers = {\n YAML: function handleYamlDirective(state2, name, args) {\n var match, major, minor;\n if (state2.version !== null) {\n throwError(state2, \"duplication of %YAML directive\");\n }\n if (args.length !== 1) {\n throwError(state2, \"YAML directive accepts exactly one argument\");\n }\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n if (match === null) {\n throwError(state2, \"ill-formed argument of the YAML directive\");\n }\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n if (major !== 1) {\n throwError(state2, \"unacceptable YAML version of the document\");\n }\n state2.version = args[0];\n state2.checkLineBreaks = minor < 2;\n if (minor !== 1 && minor !== 2) {\n throwWarning(state2, \"unsupported YAML version of the document\");\n }\n },\n TAG: function handleTagDirective(state2, name, args) {\n var handle, prefix;\n if (args.length !== 2) {\n throwError(state2, \"TAG directive accepts exactly two arguments\");\n }\n handle = args[0];\n prefix = args[1];\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state2, \"ill-formed tag handle (first argument) of the TAG directive\");\n }\n if (_hasOwnProperty$1.call(state2.tagMap, handle)) {\n throwError(state2, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state2, \"ill-formed tag prefix (second argument) of the TAG directive\");\n }\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state2, \"tag prefix is malformed: \" + prefix);\n }\n state2.tagMap[handle] = prefix;\n }\n};\nfunction captureSegment(state2, start, end, checkJson) {\n var _position, _length, _character, _result;\n if (start < end) {\n _result = state2.input.slice(start, end);\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 9 || 32 <= _character && _character <= 1114111)) {\n throwError(state2, \"expected valid JSON character\");\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state2, \"the stream contains non-printable characters\");\n }\n state2.result += _result;\n }\n}\nfunction mergeMappings(state2, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n if (!common.isObject(source)) {\n throwError(state2, \"cannot merge mappings; the provided source object is unacceptable\");\n }\n sourceKeys = Object.keys(source);\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n if (!_hasOwnProperty$1.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\nfunction storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) {\n var index, quantity;\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state2, \"nested arrays are not supported inside keys\");\n }\n if (typeof keyNode === \"object\" && _class(keyNode[index]) === \"[object Object]\") {\n keyNode[index] = \"[object Object]\";\n }\n }\n }\n if (typeof keyNode === \"object\" && _class(keyNode) === \"[object Object]\") {\n keyNode = \"[object Object]\";\n }\n keyNode = String(keyNode);\n if (_result === null) {\n _result = {};\n }\n if (keyTag === \"tag:yaml.org,2002:merge\") {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state2, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state2, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state2.json && !_hasOwnProperty$1.call(overridableKeys, keyNode) && _hasOwnProperty$1.call(_result, keyNode)) {\n state2.line = startLine || state2.line;\n state2.lineStart = startLineStart || state2.lineStart;\n state2.position = startPos || state2.position;\n throwError(state2, \"duplicated mapping key\");\n }\n if (keyNode === \"__proto__\") {\n Object.defineProperty(_result, keyNode, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: valueNode\n });\n } else {\n _result[keyNode] = valueNode;\n }\n delete overridableKeys[keyNode];\n }\n return _result;\n}\nfunction readLineBreak(state2) {\n var ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 10) {\n state2.position++;\n } else if (ch === 13) {\n state2.position++;\n if (state2.input.charCodeAt(state2.position) === 10) {\n state2.position++;\n }\n } else {\n throwError(state2, \"a line break is expected\");\n }\n state2.line += 1;\n state2.lineStart = state2.position;\n state2.firstTabInLine = -1;\n}\nfunction skipSeparationSpace(state2, allowComments, checkIndent) {\n var lineBreaks = 0, ch = state2.input.charCodeAt(state2.position);\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 9 && state2.firstTabInLine === -1) {\n state2.firstTabInLine = state2.position;\n }\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (allowComments && ch === 35) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (ch !== 10 && ch !== 13 && ch !== 0);\n }\n if (is_EOL(ch)) {\n readLineBreak(state2);\n ch = state2.input.charCodeAt(state2.position);\n lineBreaks++;\n state2.lineIndent = 0;\n while (ch === 32) {\n state2.lineIndent++;\n ch = state2.input.charCodeAt(++state2.position);\n }\n } else {\n break;\n }\n }\n if (checkIndent !== -1 && lineBreaks !== 0 && state2.lineIndent < checkIndent) {\n throwWarning(state2, \"deficient indentation\");\n }\n return lineBreaks;\n}\nfunction testDocumentSeparator(state2) {\n var _position = state2.position, ch;\n ch = state2.input.charCodeAt(_position);\n if ((ch === 45 || ch === 46) && ch === state2.input.charCodeAt(_position + 1) && ch === state2.input.charCodeAt(_position + 2)) {\n _position += 3;\n ch = state2.input.charCodeAt(_position);\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n return false;\n}\nfunction writeFoldedLines(state2, count) {\n if (count === 1) {\n state2.result += \" \";\n } else if (count > 1) {\n state2.result += common.repeat(\"\\n\", count - 1);\n }\n}\nfunction readPlainScalar(state2, nodeIndent, withinFlowCollection) {\n var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state2.kind, _result = state2.result, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) {\n return false;\n }\n if (ch === 63 || ch === 45) {\n following = state2.input.charCodeAt(state2.position + 1);\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n captureStart = captureEnd = state2.position;\n hasPendingContent = false;\n while (ch !== 0) {\n if (ch === 58) {\n following = state2.input.charCodeAt(state2.position + 1);\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n } else if (ch === 35) {\n preceding = state2.input.charCodeAt(state2.position - 1);\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n } else if (state2.position === state2.lineStart && testDocumentSeparator(state2) || withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n } else if (is_EOL(ch)) {\n _line = state2.line;\n _lineStart = state2.lineStart;\n _lineIndent = state2.lineIndent;\n skipSeparationSpace(state2, false, -1);\n if (state2.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state2.input.charCodeAt(state2.position);\n continue;\n } else {\n state2.position = captureEnd;\n state2.line = _line;\n state2.lineStart = _lineStart;\n state2.lineIndent = _lineIndent;\n break;\n }\n }\n if (hasPendingContent) {\n captureSegment(state2, captureStart, captureEnd, false);\n writeFoldedLines(state2, state2.line - _line);\n captureStart = captureEnd = state2.position;\n hasPendingContent = false;\n }\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state2.position + 1;\n }\n ch = state2.input.charCodeAt(++state2.position);\n }\n captureSegment(state2, captureStart, captureEnd, false);\n if (state2.result) {\n return true;\n }\n state2.kind = _kind;\n state2.result = _result;\n return false;\n}\nfunction readSingleQuotedScalar(state2, nodeIndent) {\n var ch, captureStart, captureEnd;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 39) {\n return false;\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n state2.position++;\n captureStart = captureEnd = state2.position;\n while ((ch = state2.input.charCodeAt(state2.position)) !== 0) {\n if (ch === 39) {\n captureSegment(state2, captureStart, state2.position, true);\n ch = state2.input.charCodeAt(++state2.position);\n if (ch === 39) {\n captureStart = state2.position;\n state2.position++;\n captureEnd = state2.position;\n } else {\n return true;\n }\n } else if (is_EOL(ch)) {\n captureSegment(state2, captureStart, captureEnd, true);\n writeFoldedLines(state2, skipSeparationSpace(state2, false, nodeIndent));\n captureStart = captureEnd = state2.position;\n } else if (state2.position === state2.lineStart && testDocumentSeparator(state2)) {\n throwError(state2, \"unexpected end of the document within a single quoted scalar\");\n } else {\n state2.position++;\n captureEnd = state2.position;\n }\n }\n throwError(state2, \"unexpected end of the stream within a single quoted scalar\");\n}\nfunction readDoubleQuotedScalar(state2, nodeIndent) {\n var captureStart, captureEnd, hexLength, hexResult, tmp, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 34) {\n return false;\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n state2.position++;\n captureStart = captureEnd = state2.position;\n while ((ch = state2.input.charCodeAt(state2.position)) !== 0) {\n if (ch === 34) {\n captureSegment(state2, captureStart, state2.position, true);\n state2.position++;\n return true;\n } else if (ch === 92) {\n captureSegment(state2, captureStart, state2.position, true);\n ch = state2.input.charCodeAt(++state2.position);\n if (is_EOL(ch)) {\n skipSeparationSpace(state2, false, nodeIndent);\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state2.result += simpleEscapeMap[ch];\n state2.position++;\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n for (; hexLength > 0; hexLength--) {\n ch = state2.input.charCodeAt(++state2.position);\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n } else {\n throwError(state2, \"expected hexadecimal character\");\n }\n }\n state2.result += charFromCodepoint(hexResult);\n state2.position++;\n } else {\n throwError(state2, \"unknown escape sequence\");\n }\n captureStart = captureEnd = state2.position;\n } else if (is_EOL(ch)) {\n captureSegment(state2, captureStart, captureEnd, true);\n writeFoldedLines(state2, skipSeparationSpace(state2, false, nodeIndent));\n captureStart = captureEnd = state2.position;\n } else if (state2.position === state2.lineStart && testDocumentSeparator(state2)) {\n throwError(state2, \"unexpected end of the document within a double quoted scalar\");\n } else {\n state2.position++;\n captureEnd = state2.position;\n }\n }\n throwError(state2, \"unexpected end of the stream within a double quoted scalar\");\n}\nfunction readFlowCollection(state2, nodeIndent) {\n var readNext = true, _line, _lineStart, _pos, _tag = state2.tag, _result, _anchor = state2.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = /* @__PURE__ */ Object.create(null), keyNode, keyTag, valueNode, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 91) {\n terminator = 93;\n isMapping = false;\n _result = [];\n } else if (ch === 123) {\n terminator = 125;\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = _result;\n }\n ch = state2.input.charCodeAt(++state2.position);\n while (ch !== 0) {\n skipSeparationSpace(state2, true, nodeIndent);\n ch = state2.input.charCodeAt(state2.position);\n if (ch === terminator) {\n state2.position++;\n state2.tag = _tag;\n state2.anchor = _anchor;\n state2.kind = isMapping ? \"mapping\" : \"sequence\";\n state2.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state2, \"missed comma between flow collection entries\");\n } else if (ch === 44) {\n throwError(state2, \"expected the node content, but found ','\");\n }\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n if (ch === 63) {\n following = state2.input.charCodeAt(state2.position + 1);\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state2.position++;\n skipSeparationSpace(state2, true, nodeIndent);\n }\n }\n _line = state2.line;\n _lineStart = state2.lineStart;\n _pos = state2.position;\n composeNode(state2, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state2.tag;\n keyNode = state2.result;\n skipSeparationSpace(state2, true, nodeIndent);\n ch = state2.input.charCodeAt(state2.position);\n if ((isExplicitPair || state2.line === _line) && ch === 58) {\n isPair = true;\n ch = state2.input.charCodeAt(++state2.position);\n skipSeparationSpace(state2, true, nodeIndent);\n composeNode(state2, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state2.result;\n }\n if (isMapping) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state2, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n skipSeparationSpace(state2, true, nodeIndent);\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 44) {\n readNext = true;\n ch = state2.input.charCodeAt(++state2.position);\n } else {\n readNext = false;\n }\n }\n throwError(state2, \"unexpected end of the stream within a flow collection\");\n}\nfunction readBlockScalar(state2, nodeIndent) {\n var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 124) {\n folding = false;\n } else if (ch === 62) {\n folding = true;\n } else {\n return false;\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n while (ch !== 0) {\n ch = state2.input.charCodeAt(++state2.position);\n if (ch === 43 || ch === 45) {\n if (CHOMPING_CLIP === chomping) {\n chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state2, \"repeat of a chomping mode identifier\");\n }\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state2, \"bad explicit indentation width of a block scalar; it cannot be less than one\");\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state2, \"repeat of an indentation width identifier\");\n }\n } else {\n break;\n }\n }\n if (is_WHITE_SPACE(ch)) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (is_WHITE_SPACE(ch));\n if (ch === 35) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (!is_EOL(ch) && ch !== 0);\n }\n }\n while (ch !== 0) {\n readLineBreak(state2);\n state2.lineIndent = 0;\n ch = state2.input.charCodeAt(state2.position);\n while ((!detectedIndent || state2.lineIndent < textIndent) && ch === 32) {\n state2.lineIndent++;\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (!detectedIndent && state2.lineIndent > textIndent) {\n textIndent = state2.lineIndent;\n }\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n if (state2.lineIndent < textIndent) {\n if (chomping === CHOMPING_KEEP) {\n state2.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) {\n state2.result += \"\\n\";\n }\n }\n break;\n }\n if (folding) {\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n state2.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state2.result += common.repeat(\"\\n\", emptyLines + 1);\n } else if (emptyLines === 0) {\n if (didReadContent) {\n state2.result += \" \";\n }\n } else {\n state2.result += common.repeat(\"\\n\", emptyLines);\n }\n } else {\n state2.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n }\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state2.position;\n while (!is_EOL(ch) && ch !== 0) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n captureSegment(state2, captureStart, state2.position, false);\n }\n return true;\n}\nfunction readBlockSequence(state2, nodeIndent) {\n var _line, _tag = state2.tag, _anchor = state2.anchor, _result = [], following, detected = false, ch;\n if (state2.firstTabInLine !== -1)\n return false;\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = _result;\n }\n ch = state2.input.charCodeAt(state2.position);\n while (ch !== 0) {\n if (state2.firstTabInLine !== -1) {\n state2.position = state2.firstTabInLine;\n throwError(state2, \"tab characters must not be used in indentation\");\n }\n if (ch !== 45) {\n break;\n }\n following = state2.input.charCodeAt(state2.position + 1);\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n detected = true;\n state2.position++;\n if (skipSeparationSpace(state2, true, -1)) {\n if (state2.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state2.input.charCodeAt(state2.position);\n continue;\n }\n }\n _line = state2.line;\n composeNode(state2, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state2.result);\n skipSeparationSpace(state2, true, -1);\n ch = state2.input.charCodeAt(state2.position);\n if ((state2.line === _line || state2.lineIndent > nodeIndent) && ch !== 0) {\n throwError(state2, \"bad indentation of a sequence entry\");\n } else if (state2.lineIndent < nodeIndent) {\n break;\n }\n }\n if (detected) {\n state2.tag = _tag;\n state2.anchor = _anchor;\n state2.kind = \"sequence\";\n state2.result = _result;\n return true;\n }\n return false;\n}\nfunction readBlockMapping(state2, nodeIndent, flowIndent) {\n var following, allowCompact, _line, _keyLine, _keyLineStart, _keyPos, _tag = state2.tag, _anchor = state2.anchor, _result = {}, overridableKeys = /* @__PURE__ */ Object.create(null), keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch;\n if (state2.firstTabInLine !== -1)\n return false;\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = _result;\n }\n ch = state2.input.charCodeAt(state2.position);\n while (ch !== 0) {\n if (!atExplicitKey && state2.firstTabInLine !== -1) {\n state2.position = state2.firstTabInLine;\n throwError(state2, \"tab characters must not be used in indentation\");\n }\n following = state2.input.charCodeAt(state2.position + 1);\n _line = state2.line;\n if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) {\n if (ch === 63) {\n if (atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n } else if (atExplicitKey) {\n atExplicitKey = false;\n allowCompact = true;\n } else {\n throwError(state2, \"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\");\n }\n state2.position += 1;\n ch = following;\n } else {\n _keyLine = state2.line;\n _keyLineStart = state2.lineStart;\n _keyPos = state2.position;\n if (!composeNode(state2, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n break;\n }\n if (state2.line === _line) {\n ch = state2.input.charCodeAt(state2.position);\n while (is_WHITE_SPACE(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (ch === 58) {\n ch = state2.input.charCodeAt(++state2.position);\n if (!is_WS_OR_EOL(ch)) {\n throwError(state2, \"a whitespace character is expected after the key-value separator within a block mapping\");\n }\n if (atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state2.tag;\n keyNode = state2.result;\n } else if (detected) {\n throwError(state2, \"can not read an implicit mapping pair; a colon is missed\");\n } else {\n state2.tag = _tag;\n state2.anchor = _anchor;\n return true;\n }\n } else if (detected) {\n throwError(state2, \"can not read a block mapping entry; a multiline key may not be an implicit key\");\n } else {\n state2.tag = _tag;\n state2.anchor = _anchor;\n return true;\n }\n }\n if (state2.line === _line || state2.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state2.line;\n _keyLineStart = state2.lineStart;\n _keyPos = state2.position;\n }\n if (composeNode(state2, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state2.result;\n } else {\n valueNode = state2.result;\n }\n }\n if (!atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n skipSeparationSpace(state2, true, -1);\n ch = state2.input.charCodeAt(state2.position);\n }\n if ((state2.line === _line || state2.lineIndent > nodeIndent) && ch !== 0) {\n throwError(state2, \"bad indentation of a mapping entry\");\n } else if (state2.lineIndent < nodeIndent) {\n break;\n }\n }\n if (atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n if (detected) {\n state2.tag = _tag;\n state2.anchor = _anchor;\n state2.kind = \"mapping\";\n state2.result = _result;\n }\n return detected;\n}\nfunction readTagProperty(state2) {\n var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 33)\n return false;\n if (state2.tag !== null) {\n throwError(state2, \"duplication of a tag property\");\n }\n ch = state2.input.charCodeAt(++state2.position);\n if (ch === 60) {\n isVerbatim = true;\n ch = state2.input.charCodeAt(++state2.position);\n } else if (ch === 33) {\n isNamed = true;\n tagHandle = \"!!\";\n ch = state2.input.charCodeAt(++state2.position);\n } else {\n tagHandle = \"!\";\n }\n _position = state2.position;\n if (isVerbatim) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (ch !== 0 && ch !== 62);\n if (state2.position < state2.length) {\n tagName = state2.input.slice(_position, state2.position);\n ch = state2.input.charCodeAt(++state2.position);\n } else {\n throwError(state2, \"unexpected end of the stream within a verbatim tag\");\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n if (ch === 33) {\n if (!isNamed) {\n tagHandle = state2.input.slice(_position - 1, state2.position + 1);\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state2, \"named tag handle cannot contain such characters\");\n }\n isNamed = true;\n _position = state2.position + 1;\n } else {\n throwError(state2, \"tag suffix cannot contain exclamation marks\");\n }\n }\n ch = state2.input.charCodeAt(++state2.position);\n }\n tagName = state2.input.slice(_position, state2.position);\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state2, \"tag suffix cannot contain flow indicator characters\");\n }\n }\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state2, \"tag name cannot contain such characters: \" + tagName);\n }\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state2, \"tag name is malformed: \" + tagName);\n }\n if (isVerbatim) {\n state2.tag = tagName;\n } else if (_hasOwnProperty$1.call(state2.tagMap, tagHandle)) {\n state2.tag = state2.tagMap[tagHandle] + tagName;\n } else if (tagHandle === \"!\") {\n state2.tag = \"!\" + tagName;\n } else if (tagHandle === \"!!\") {\n state2.tag = \"tag:yaml.org,2002:\" + tagName;\n } else {\n throwError(state2, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n return true;\n}\nfunction readAnchorProperty(state2) {\n var _position, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 38)\n return false;\n if (state2.anchor !== null) {\n throwError(state2, \"duplication of an anchor property\");\n }\n ch = state2.input.charCodeAt(++state2.position);\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (state2.position === _position) {\n throwError(state2, \"name of an anchor node must contain at least one character\");\n }\n state2.anchor = state2.input.slice(_position, state2.position);\n return true;\n}\nfunction readAlias(state2) {\n var _position, alias, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 42)\n return false;\n ch = state2.input.charCodeAt(++state2.position);\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (state2.position === _position) {\n throwError(state2, \"name of an alias node must contain at least one character\");\n }\n alias = state2.input.slice(_position, state2.position);\n if (!_hasOwnProperty$1.call(state2.anchorMap, alias)) {\n throwError(state2, 'unidentified alias \"' + alias + '\"');\n }\n state2.result = state2.anchorMap[alias];\n skipSeparationSpace(state2, true, -1);\n return true;\n}\nfunction composeNode(state2, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, atNewLine = false, hasContent = false, typeIndex, typeQuantity, typeList, type2, flowIndent, blockIndent;\n if (state2.listener !== null) {\n state2.listener(\"open\", state2);\n }\n state2.tag = null;\n state2.anchor = null;\n state2.kind = null;\n state2.result = null;\n allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;\n if (allowToSeek) {\n if (skipSeparationSpace(state2, true, -1)) {\n atNewLine = true;\n if (state2.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state2.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state2.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n if (indentStatus === 1) {\n while (readTagProperty(state2) || readAnchorProperty(state2)) {\n if (skipSeparationSpace(state2, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n if (state2.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state2.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state2.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n blockIndent = state2.position - state2.lineStart;\n if (indentStatus === 1) {\n if (allowBlockCollections && (readBlockSequence(state2, blockIndent) || readBlockMapping(state2, blockIndent, flowIndent)) || readFlowCollection(state2, flowIndent)) {\n hasContent = true;\n } else {\n if (allowBlockScalars && readBlockScalar(state2, flowIndent) || readSingleQuotedScalar(state2, flowIndent) || readDoubleQuotedScalar(state2, flowIndent)) {\n hasContent = true;\n } else if (readAlias(state2)) {\n hasContent = true;\n if (state2.tag !== null || state2.anchor !== null) {\n throwError(state2, \"alias node should not have any properties\");\n }\n } else if (readPlainScalar(state2, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n if (state2.tag === null) {\n state2.tag = \"?\";\n }\n }\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n }\n } else if (indentStatus === 0) {\n hasContent = allowBlockCollections && readBlockSequence(state2, blockIndent);\n }\n }\n if (state2.tag === null) {\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n } else if (state2.tag === \"?\") {\n if (state2.result !== null && state2.kind !== \"scalar\") {\n throwError(state2, 'unacceptable node kind for ! tag; it should be \"scalar\", not \"' + state2.kind + '\"');\n }\n for (typeIndex = 0, typeQuantity = state2.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type2 = state2.implicitTypes[typeIndex];\n if (type2.resolve(state2.result)) {\n state2.result = type2.construct(state2.result);\n state2.tag = type2.tag;\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n break;\n }\n }\n } else if (state2.tag !== \"!\") {\n if (_hasOwnProperty$1.call(state2.typeMap[state2.kind || \"fallback\"], state2.tag)) {\n type2 = state2.typeMap[state2.kind || \"fallback\"][state2.tag];\n } else {\n type2 = null;\n typeList = state2.typeMap.multi[state2.kind || \"fallback\"];\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state2.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type2 = typeList[typeIndex];\n break;\n }\n }\n }\n if (!type2) {\n throwError(state2, \"unknown tag !<\" + state2.tag + \">\");\n }\n if (state2.result !== null && type2.kind !== state2.kind) {\n throwError(state2, \"unacceptable node kind for !<\" + state2.tag + '> tag; it should be \"' + type2.kind + '\", not \"' + state2.kind + '\"');\n }\n if (!type2.resolve(state2.result, state2.tag)) {\n throwError(state2, \"cannot resolve a node with !<\" + state2.tag + \"> explicit tag\");\n } else {\n state2.result = type2.construct(state2.result, state2.tag);\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n }\n }\n if (state2.listener !== null) {\n state2.listener(\"close\", state2);\n }\n return state2.tag !== null || state2.anchor !== null || hasContent;\n}\nfunction readDocument(state2) {\n var documentStart = state2.position, _position, directiveName, directiveArgs, hasDirectives = false, ch;\n state2.version = null;\n state2.checkLineBreaks = state2.legacy;\n state2.tagMap = /* @__PURE__ */ Object.create(null);\n state2.anchorMap = /* @__PURE__ */ Object.create(null);\n while ((ch = state2.input.charCodeAt(state2.position)) !== 0) {\n skipSeparationSpace(state2, true, -1);\n ch = state2.input.charCodeAt(state2.position);\n if (state2.lineIndent > 0 || ch !== 37) {\n break;\n }\n hasDirectives = true;\n ch = state2.input.charCodeAt(++state2.position);\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n directiveName = state2.input.slice(_position, state2.position);\n directiveArgs = [];\n if (directiveName.length < 1) {\n throwError(state2, \"directive name must not be less than one character in length\");\n }\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (ch === 35) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (ch !== 0 && !is_EOL(ch));\n break;\n }\n if (is_EOL(ch))\n break;\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n directiveArgs.push(state2.input.slice(_position, state2.position));\n }\n if (ch !== 0)\n readLineBreak(state2);\n if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state2, directiveName, directiveArgs);\n } else {\n throwWarning(state2, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n skipSeparationSpace(state2, true, -1);\n if (state2.lineIndent === 0 && state2.input.charCodeAt(state2.position) === 45 && state2.input.charCodeAt(state2.position + 1) === 45 && state2.input.charCodeAt(state2.position + 2) === 45) {\n state2.position += 3;\n skipSeparationSpace(state2, true, -1);\n } else if (hasDirectives) {\n throwError(state2, \"directives end mark is expected\");\n }\n composeNode(state2, state2.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state2, true, -1);\n if (state2.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state2.input.slice(documentStart, state2.position))) {\n throwWarning(state2, \"non-ASCII line breaks are interpreted as content\");\n }\n state2.documents.push(state2.result);\n if (state2.position === state2.lineStart && testDocumentSeparator(state2)) {\n if (state2.input.charCodeAt(state2.position) === 46) {\n state2.position += 3;\n skipSeparationSpace(state2, true, -1);\n }\n return;\n }\n if (state2.position < state2.length - 1) {\n throwError(state2, \"end of the stream or a document separator is expected\");\n } else {\n return;\n }\n}\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n if (input.length !== 0) {\n if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) {\n input += \"\\n\";\n }\n if (input.charCodeAt(0) === 65279) {\n input = input.slice(1);\n }\n }\n var state2 = new State$1(input, options);\n var nullpos = input.indexOf(\"\\0\");\n if (nullpos !== -1) {\n state2.position = nullpos;\n throwError(state2, \"null byte is not allowed in input\");\n }\n state2.input += \"\\0\";\n while (state2.input.charCodeAt(state2.position) === 32) {\n state2.lineIndent += 1;\n state2.position += 1;\n }\n while (state2.position < state2.length - 1) {\n readDocument(state2);\n }\n return state2.documents;\n}\nfunction loadAll$1(input, iterator, options) {\n if (iterator !== null && typeof iterator === \"object\" && typeof options === \"undefined\") {\n options = iterator;\n iterator = null;\n }\n var documents = loadDocuments(input, options);\n if (typeof iterator !== \"function\") {\n return documents;\n }\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\nfunction load$1(input, options) {\n var documents = loadDocuments(input, options);\n if (documents.length === 0) {\n return void 0;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new exception(\"expected a single document in the stream, but found more\");\n}\nvar loadAll_1 = loadAll$1;\nvar load_1 = load$1;\nvar loader = {\n loadAll: loadAll_1,\n load: load_1\n};\nvar JSON_SCHEMA = json;\nvar load = loader.load;\nfunction extractFrontMatter(text) {\n const matches = text.match(frontMatterRegex);\n if (!matches) {\n return {\n text,\n metadata: {}\n };\n }\n let parsed = load(matches[1], {\n // To support config, we need JSON schema.\n // https://www.yaml.org/spec/1.2/spec.html#id2803231\n schema: JSON_SCHEMA\n }) ?? {};\n parsed = typeof parsed === \"object\" && !Array.isArray(parsed) ? parsed : {};\n const metadata = {};\n if (parsed.displayMode) {\n metadata.displayMode = parsed.displayMode.toString();\n }\n if (parsed.title) {\n metadata.title = parsed.title.toString();\n }\n if (parsed.config) {\n metadata.config = parsed.config;\n }\n return {\n text: text.slice(matches[0].length),\n metadata\n };\n}\nconst cleanupText = (code) => {\n return code.replace(/\\r\\n?/g, \"\\n\").replace(\n /<(\\w+)([^>]*)>/g,\n (match, tag, attributes) => \"<\" + tag + attributes.replace(/=\"([^\"]*)\"/g, \"='$1'\") + \">\"\n );\n};\nconst processFrontmatter = (code) => {\n const { text, metadata } = extractFrontMatter(code);\n const { displayMode, title, config: config2 = {} } = metadata;\n if (displayMode) {\n if (!config2.gantt) {\n config2.gantt = {};\n }\n config2.gantt.displayMode = displayMode;\n }\n return { title, config: config2, text };\n};\nconst processDirectives = (code) => {\n const initDirective = utils.detectInit(code) ?? {};\n const wrapDirectives = utils.detectDirective(code, \"wrap\");\n if (Array.isArray(wrapDirectives)) {\n initDirective.wrap = wrapDirectives.some(({ type: type2 }) => {\n });\n } else if ((wrapDirectives == null ? void 0 : wrapDirectives.type) === \"wrap\") {\n initDirective.wrap = true;\n }\n return {\n text: removeDirectives(code),\n directive: initDirective\n };\n};\nfunction preprocessDiagram(code) {\n const cleanedCode = cleanupText(code);\n const frontMatterResult = processFrontmatter(cleanedCode);\n const directiveResult = processDirectives(frontMatterResult.text);\n const config2 = cleanAndMerge(frontMatterResult.config, directiveResult.directive);\n code = cleanupComments(directiveResult.text);\n return {\n code,\n title: frontMatterResult.title,\n config: config2\n };\n}\nconst MAX_TEXTLENGTH = 5e4;\nconst MAX_TEXTLENGTH_EXCEEDED_MSG = \"graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa\";\nconst SECURITY_LVL_SANDBOX = \"sandbox\";\nconst SECURITY_LVL_LOOSE = \"loose\";\nconst XMLNS_SVG_STD = \"http://www.w3.org/2000/svg\";\nconst XMLNS_XLINK_STD = \"http://www.w3.org/1999/xlink\";\nconst XMLNS_XHTML_STD = \"http://www.w3.org/1999/xhtml\";\nconst IFRAME_WIDTH = \"100%\";\nconst IFRAME_HEIGHT = \"100%\";\nconst IFRAME_STYLES = \"border:0;margin:0;\";\nconst IFRAME_BODY_STYLE = \"margin:0\";\nconst IFRAME_SANDBOX_OPTS = \"allow-top-navigation-by-user-activation allow-popups\";\nconst IFRAME_NOT_SUPPORTED_MSG = 'The \"iframe\" tag is not supported by your browser.';\nconst DOMPURIFY_TAGS = [\"foreignobject\"];\nconst DOMPURIFY_ATTR = [\"dominant-baseline\"];\nfunction processAndSetConfigs(text) {\n const processed = preprocessDiagram(text);\n reset();\n addDirective(processed.config ?? {});\n return processed;\n}\nasync function parse$1(text, parseOptions) {\n addDiagrams();\n text = processAndSetConfigs(text).code;\n try {\n await getDiagramFromText(text);\n } catch (error) {\n if (parseOptions == null ? void 0 : parseOptions.suppressErrors) {\n return false;\n }\n throw error;\n }\n return true;\n}\nconst encodeEntities = function(text) {\n let txt = text;\n txt = txt.replace(/style.*:\\S*#.*;/g, function(s) {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function(s) {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/#\\w+;/g, function(s) {\n const innerTxt = s.substring(1, s.length - 1);\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return \"\uFB02\u00B0\u00B0\" + innerTxt + \"\u00B6\u00DF\";\n } else {\n return \"\uFB02\u00B0\" + innerTxt + \"\u00B6\u00DF\";\n }\n });\n return txt;\n};\nconst decodeEntities = function(text) {\n return text.replace(/\uFB02\u00B0\u00B0/g, \"&#\").replace(/\uFB02\u00B0/g, \"&\").replace(/\u00B6\u00DF/g, \";\");\n};\nconst cssImportantStyles = (cssClass, element, cssClasses = []) => {\n return `\n.${cssClass} ${element} { ${cssClasses.join(\" !important; \")} !important; }`;\n};\nconst createCssStyles = (config2, classDefs = {}) => {\n var _a;\n let cssStyles = \"\";\n if (config2.themeCSS !== void 0) {\n cssStyles += `\n${config2.themeCSS}`;\n }\n if (config2.fontFamily !== void 0) {\n cssStyles += `\n:root { --mermaid-font-family: ${config2.fontFamily}}`;\n }\n if (config2.altFontFamily !== void 0) {\n cssStyles += `\n:root { --mermaid-alt-font-family: ${config2.altFontFamily}}`;\n }\n if (!isEmpty(classDefs)) {\n const htmlLabels = config2.htmlLabels || ((_a = config2.flowchart) == null ? void 0 : _a.htmlLabels);\n const cssHtmlElements = [\"> *\", \"span\"];\n const cssShapeElements = [\"rect\", \"polygon\", \"ellipse\", \"circle\", \"path\"];\n const cssElements = htmlLabels ? cssHtmlElements : cssShapeElements;\n for (const classId in classDefs) {\n const styleClassDef = classDefs[classId];\n if (!isEmpty(styleClassDef.styles)) {\n cssElements.forEach((cssElement) => {\n cssStyles += cssImportantStyles(styleClassDef.id, cssElement, styleClassDef.styles);\n });\n }\n if (!isEmpty(styleClassDef.textStyles)) {\n cssStyles += cssImportantStyles(styleClassDef.id, \"tspan\", styleClassDef.textStyles);\n }\n }\n }\n return cssStyles;\n};\nconst createUserStyles = (config2, graphType, classDefs, svgId) => {\n const userCSSstyles = createCssStyles(config2, classDefs);\n const allStyles = getStyles$1(graphType, userCSSstyles, config2.themeVariables);\n return serialize(compile(`${svgId}{${allStyles}}`), stringify);\n};\nconst cleanUpSvgCode = (svgCode = \"\", inSandboxMode, useArrowMarkerUrls) => {\n let cleanedUpSvg = svgCode;\n if (!useArrowMarkerUrls && !inSandboxMode) {\n cleanedUpSvg = cleanedUpSvg.replace(\n /marker-end=\"url\\([\\d+./:=?A-Za-z-]*?#/g,\n 'marker-end=\"url(#'\n );\n }\n cleanedUpSvg = decodeEntities(cleanedUpSvg);\n cleanedUpSvg = cleanedUpSvg.replace(/
/g, \"
\");\n return cleanedUpSvg;\n};\nconst putIntoIFrame = (svgCode = \"\", svgElement) => {\n var _a, _b;\n const height = ((_b = (_a = svgElement == null ? void 0 : svgElement.viewBox) == null ? void 0 : _a.baseVal) == null ? void 0 : _b.height) ? svgElement.viewBox.baseVal.height + \"px\" : IFRAME_HEIGHT;\n const base64encodedSrc = btoa('' + svgCode + \"\");\n return ``;\n};\nconst appendDivSvgG = (parentRoot, id2, enclosingDivId, divStyle, svgXlink) => {\n const enclosingDiv = parentRoot.append(\"div\");\n enclosingDiv.attr(\"id\", enclosingDivId);\n if (divStyle) {\n enclosingDiv.attr(\"style\", divStyle);\n }\n const svgNode = enclosingDiv.append(\"svg\").attr(\"id\", id2).attr(\"width\", \"100%\").attr(\"xmlns\", XMLNS_SVG_STD);\n if (svgXlink) {\n svgNode.attr(\"xmlns:xlink\", svgXlink);\n }\n svgNode.append(\"g\");\n return parentRoot;\n};\nfunction sandboxedIframe(parentNode, iFrameId) {\n return parentNode.append(\"iframe\").attr(\"id\", iFrameId).attr(\"style\", \"width: 100%; height: 100%;\").attr(\"sandbox\", \"\");\n}\nconst removeExistingElements = (doc, id2, divId, iFrameId) => {\n var _a, _b, _c;\n (_a = doc.getElementById(id2)) == null ? void 0 : _a.remove();\n (_b = doc.getElementById(divId)) == null ? void 0 : _b.remove();\n (_c = doc.getElementById(iFrameId)) == null ? void 0 : _c.remove();\n};\nconst render$1 = async function(id2, text, svgContainingElement) {\n var _a, _b, _c, _d, _e, _f;\n addDiagrams();\n const processed = processAndSetConfigs(text);\n text = processed.code;\n const config2 = getConfig$1();\n log$1.debug(config2);\n if (text.length > ((config2 == null ? void 0 : config2.maxTextSize) ?? MAX_TEXTLENGTH)) {\n text = MAX_TEXTLENGTH_EXCEEDED_MSG;\n }\n const idSelector = \"#\" + id2;\n const iFrameID = \"i\" + id2;\n const iFrameID_selector = \"#\" + iFrameID;\n const enclosingDivID = \"d\" + id2;\n const enclosingDivID_selector = \"#\" + enclosingDivID;\n let root = select(\"body\");\n const isSandboxed = config2.securityLevel === SECURITY_LVL_SANDBOX;\n const isLooseSecurityLevel = config2.securityLevel === SECURITY_LVL_LOOSE;\n const fontFamily = config2.fontFamily;\n if (svgContainingElement !== void 0) {\n if (svgContainingElement) {\n svgContainingElement.innerHTML = \"\";\n }\n if (isSandboxed) {\n const iframe = sandboxedIframe(select(svgContainingElement), iFrameID);\n root = select(iframe.nodes()[0].contentDocument.body);\n root.node().style.margin = 0;\n } else {\n root = select(svgContainingElement);\n }\n appendDivSvgG(root, id2, enclosingDivID, `font-family: ${fontFamily}`, XMLNS_XLINK_STD);\n } else {\n removeExistingElements(document, id2, enclosingDivID, iFrameID);\n if (isSandboxed) {\n const iframe = sandboxedIframe(select(\"body\"), iFrameID);\n root = select(iframe.nodes()[0].contentDocument.body);\n root.node().style.margin = 0;\n } else {\n root = select(\"body\");\n }\n appendDivSvgG(root, id2, enclosingDivID);\n }\n text = encodeEntities(text);\n let diag;\n let parseEncounteredException;\n try {\n diag = await getDiagramFromText(text, { title: processed.title });\n } catch (error) {\n diag = new Diagram(\"error\");\n parseEncounteredException = error;\n }\n const element = root.select(enclosingDivID_selector).node();\n const diagramType = diag.type;\n const svg = element.firstChild;\n const firstChild = svg.firstChild;\n const diagramClassDefs = (_b = (_a = diag.renderer).getClasses) == null ? void 0 : _b.call(_a, text, diag);\n const rules = createUserStyles(config2, diagramType, diagramClassDefs, idSelector);\n const style1 = document.createElement(\"style\");\n style1.innerHTML = rules;\n svg.insertBefore(style1, firstChild);\n try {\n await diag.renderer.draw(text, id2, version, diag);\n } catch (e) {\n errorRenderer.draw(text, id2, version);\n throw e;\n }\n const svgNode = root.select(`${enclosingDivID_selector} svg`);\n const a11yTitle = (_d = (_c = diag.db).getAccTitle) == null ? void 0 : _d.call(_c);\n const a11yDescr = (_f = (_e = diag.db).getAccDescription) == null ? void 0 : _f.call(_e);\n addA11yInfo(diagramType, svgNode, a11yTitle, a11yDescr);\n root.select(`[id=\"${id2}\"]`).selectAll(\"foreignobject > *\").attr(\"xmlns\", XMLNS_XHTML_STD);\n let svgCode = root.select(enclosingDivID_selector).node().innerHTML;\n log$1.debug(\"config.arrowMarkerAbsolute\", config2.arrowMarkerAbsolute);\n svgCode = cleanUpSvgCode(svgCode, isSandboxed, evaluate(config2.arrowMarkerAbsolute));\n if (isSandboxed) {\n const svgEl = root.select(enclosingDivID_selector + \" svg\").node();\n svgCode = putIntoIFrame(svgCode, svgEl);\n } else if (!isLooseSecurityLevel) {\n svgCode = DOMPurify.sanitize(svgCode, {\n ADD_TAGS: DOMPURIFY_TAGS,\n ADD_ATTR: DOMPURIFY_ATTR\n });\n }\n attachFunctions();\n if (parseEncounteredException) {\n throw parseEncounteredException;\n }\n const tmpElementSelector = isSandboxed ? iFrameID_selector : enclosingDivID_selector;\n const node = select(tmpElementSelector).node();\n if (node && \"remove\" in node) {\n node.remove();\n }\n return {\n svg: svgCode,\n bindFunctions: diag.db.bindFunctions\n };\n};\nfunction initialize$1(options = {}) {\n var _a;\n if ((options == null ? void 0 : options.fontFamily) && !((_a = options.themeVariables) == null ? void 0 : _a.fontFamily)) {\n if (!options.themeVariables) {\n options.themeVariables = {};\n }\n options.themeVariables.fontFamily = options.fontFamily;\n }\n saveConfigFromInitialize(options);\n if ((options == null ? void 0 : options.theme) && options.theme in theme) {\n options.themeVariables = theme[options.theme].getThemeVariables(\n options.themeVariables\n );\n } else if (options) {\n options.themeVariables = theme.default.getThemeVariables(options.themeVariables);\n }\n const config2 = typeof options === \"object\" ? setSiteConfig(options) : getSiteConfig();\n setLogLevel$1(config2.logLevel);\n addDiagrams();\n}\nfunction addA11yInfo(diagramType, svgNode, a11yTitle, a11yDescr) {\n setA11yDiagramInfo(svgNode, diagramType);\n addSVGa11yTitleDescription(svgNode, a11yTitle, a11yDescr, svgNode.attr(\"id\"));\n}\nconst mermaidAPI = Object.freeze({\n render: render$1,\n parse: parse$1,\n getDiagramFromText,\n initialize: initialize$1,\n getConfig: getConfig$1,\n setConfig,\n getSiteConfig,\n updateSiteConfig,\n reset: () => {\n reset();\n },\n globalReset: () => {\n reset(defaultConfig);\n },\n defaultConfig\n});\nsetLogLevel$1(getConfig$1().logLevel);\nreset(getConfig$1());\nconst loadRegisteredDiagrams = async () => {\n log$1.debug(`Loading registered diagrams`);\n const results = await Promise.allSettled(\n Object.entries(detectors).map(async ([key, { detector: detector2, loader: loader2 }]) => {\n if (loader2) {\n try {\n getDiagram(key);\n } catch (error) {\n try {\n const { diagram: diagram2, id: id2 } = await loader2();\n registerDiagram(id2, diagram2, detector2);\n } catch (err) {\n log$1.error(`Failed to load external diagram with key ${key}. Removing from detectors.`);\n delete detectors[key];\n throw err;\n }\n }\n }\n })\n );\n const failed = results.filter((result) => result.status === \"rejected\");\n if (failed.length > 0) {\n log$1.error(`Failed to load ${failed.length} external diagrams`);\n for (const res of failed) {\n log$1.error(res);\n }\n throw new Error(`Failed to load ${failed.length} external diagrams`);\n }\n};\nconst handleError = (error, errors, parseError) => {\n log$1.warn(error);\n if (isDetailedError(error)) {\n if (parseError) {\n parseError(error.str, error.hash);\n }\n errors.push({ ...error, message: error.str, error });\n } else {\n if (parseError) {\n parseError(error);\n }\n if (error instanceof Error) {\n errors.push({\n str: error.message,\n message: error.message,\n hash: error.name,\n error\n });\n }\n }\n};\nconst run = async function(options = {\n querySelector: \".mermaid\"\n}) {\n try {\n await runThrowsErrors(options);\n } catch (e) {\n if (isDetailedError(e)) {\n log$1.error(e.str);\n }\n if (mermaid.parseError) {\n mermaid.parseError(e);\n }\n if (!options.suppressErrors) {\n log$1.error(\"Use the suppressErrors option to suppress these errors\");\n throw e;\n }\n }\n};\nconst runThrowsErrors = async function({ postRenderCallback, querySelector, nodes } = {\n querySelector: \".mermaid\"\n}) {\n const conf = mermaidAPI.getConfig();\n log$1.debug(`${!postRenderCallback ? \"No \" : \"\"}Callback function found`);\n let nodesToProcess;\n if (nodes) {\n nodesToProcess = nodes;\n } else if (querySelector) {\n nodesToProcess = document.querySelectorAll(querySelector);\n } else {\n throw new Error(\"Nodes and querySelector are both undefined\");\n }\n log$1.debug(`Found ${nodesToProcess.length} diagrams`);\n if ((conf == null ? void 0 : conf.startOnLoad) !== void 0) {\n log$1.debug(\"Start On Load: \" + (conf == null ? void 0 : conf.startOnLoad));\n mermaidAPI.updateSiteConfig({ startOnLoad: conf == null ? void 0 : conf.startOnLoad });\n }\n const idGenerator = new utils.InitIDGenerator(conf.deterministicIds, conf.deterministicIDSeed);\n let txt;\n const errors = [];\n for (const element of Array.from(nodesToProcess)) {\n log$1.info(\"Rendering diagram: \" + element.id);\n /*! Check if previously processed */\n if (element.getAttribute(\"data-processed\")) {\n continue;\n }\n element.setAttribute(\"data-processed\", \"true\");\n const id2 = `mermaid-${idGenerator.next()}`;\n txt = element.innerHTML;\n txt = dedent(utils.entityDecode(txt)).trim().replace(//gi, \"
\");\n const init2 = utils.detectInit(txt);\n if (init2) {\n log$1.debug(\"Detected early reinit: \", init2);\n }\n try {\n const { svg, bindFunctions } = await render(id2, txt, element);\n element.innerHTML = svg;\n if (postRenderCallback) {\n await postRenderCallback(id2);\n }\n if (bindFunctions) {\n bindFunctions(element);\n }\n } catch (error) {\n handleError(error, errors, mermaid.parseError);\n }\n }\n if (errors.length > 0) {\n throw errors[0];\n }\n};\nconst initialize = function(config2) {\n mermaidAPI.initialize(config2);\n};\nconst init = async function(config2, nodes, callback) {\n log$1.warn(\"mermaid.init is deprecated. Please use run instead.\");\n if (config2) {\n initialize(config2);\n }\n const runOptions = { postRenderCallback: callback, querySelector: \".mermaid\" };\n if (typeof nodes === \"string\") {\n runOptions.querySelector = nodes;\n } else if (nodes) {\n if (nodes instanceof HTMLElement) {\n runOptions.nodes = [nodes];\n } else {\n runOptions.nodes = nodes;\n }\n }\n await run(runOptions);\n};\nconst registerExternalDiagrams = async (diagrams2, {\n lazyLoad = true\n} = {}) => {\n registerLazyLoadedDiagrams(...diagrams2);\n if (lazyLoad === false) {\n await loadRegisteredDiagrams();\n }\n};\nconst contentLoaded = function() {\n if (mermaid.startOnLoad) {\n const { startOnLoad } = mermaidAPI.getConfig();\n if (startOnLoad) {\n mermaid.run().catch((err) => log$1.error(\"Mermaid failed to initialize\", err));\n }\n }\n};\nif (typeof document !== \"undefined\") {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener(\"load\", contentLoaded, false);\n}\nconst setParseErrorHandler = function(parseErrorHandler) {\n mermaid.parseError = parseErrorHandler;\n};\nconst executionQueue = [];\nlet executionQueueRunning = false;\nconst executeQueue = async () => {\n if (executionQueueRunning) {\n return;\n }\n executionQueueRunning = true;\n while (executionQueue.length > 0) {\n const f = executionQueue.shift();\n if (f) {\n try {\n await f();\n } catch (e) {\n log$1.error(\"Error executing queue\", e);\n }\n }\n }\n executionQueueRunning = false;\n};\nconst parse = async (text, parseOptions) => {\n return new Promise((resolve, reject) => {\n const performCall = () => new Promise((res, rej) => {\n mermaidAPI.parse(text, parseOptions).then(\n (r) => {\n res(r);\n resolve(r);\n },\n (e) => {\n var _a;\n log$1.error(\"Error parsing\", e);\n (_a = mermaid.parseError) == null ? void 0 : _a.call(mermaid, e);\n rej(e);\n reject(e);\n }\n );\n });\n executionQueue.push(performCall);\n executeQueue().catch(reject);\n });\n};\nconst render = (id2, text, container) => {\n return new Promise((resolve, reject) => {\n const performCall = () => new Promise((res, rej) => {\n mermaidAPI.render(id2, text, container).then(\n (r) => {\n res(r);\n resolve(r);\n },\n (e) => {\n var _a;\n log$1.error(\"Error parsing\", e);\n (_a = mermaid.parseError) == null ? void 0 : _a.call(mermaid, e);\n rej(e);\n reject(e);\n }\n );\n });\n executionQueue.push(performCall);\n executeQueue().catch(reject);\n });\n};\nconst mermaid = {\n startOnLoad: true,\n mermaidAPI,\n parse,\n render,\n init,\n run,\n registerExternalDiagrams,\n initialize,\n parseError: void 0,\n contentLoaded,\n setParseErrorHandler,\n detectType\n};\nexport {\n selectSvgElement as A,\n defaultConfig$1 as B,\n cleanAndMerge as C,\n parseFontSize as D,\n getThemeVariables$2 as E,\n addFunction as F,\n generateId as G,\n lineBreakRegex as H,\n defaultConfig as I,\n decodeEntities as J,\n commonDb as K,\n mermaid as L,\n ZERO_WIDTH_SPACE as Z,\n getAccDescription as a,\n setAccDescription as b,\n getConfig$1 as c,\n sanitizeText$2 as d,\n common$1 as e,\n assignWithDepth$1 as f,\n getAccTitle as g,\n calculateTextWidth as h,\n configureSvgSize as i,\n calculateTextHeight as j,\n getStylesFromArray as k,\n log$1 as l,\n evaluate as m,\n interpolateToCurve as n,\n setupGraphViewbox$1 as o,\n setConfig as p,\n setDiagramTitle as q,\n getDiagramTitle as r,\n setAccTitle as s,\n clear as t,\n utils as u,\n parseGenericTypes as v,\n wrapLabel as w,\n random as x,\n getConfig as y,\n setupGraphViewbox as z\n};\n", "export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n", "/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n", "import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n", "import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n", "import {IMPORT, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n"], + "mappings": "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hB,GAAI,OAAOD,EAAKH,OAAU,WACxB,OAAO9C,EAAQiD,EAAKH,KAAN,CAEjB,CAEDH,EAAS1D,EAAe0D,CAAD,CACxB,CAEQQ,SAAAA,EAAcX,EAAS,CAC9BY,eAAQC,KAAK,qBAAsBb,CAAnC,EACO,IACR,CAED,OAAOW,CACR,CC5HM,IAAMG,GAAOlE,EAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,KArHyB,CAAD,EAyHbmE,EAAMnE,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,OA3CwB,CAAD,EA8CZoE,EAAapE,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,cAzB+B,CAAD,EAgCnBqE,EAAgBrE,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,KAtBkC,CAAD,EAyBtBsE,EAAStE,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,aA9B2B,CAAD,EAmCfuE,EAAmBvE,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,MAfqC,CAAD,EAkBzBwE,EAAOxE,EAAO,CAAC,OAAD,CAAD,ECrRbkE,EAAOlE,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,UACA,cACA,cACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,QACA,MA7GyB,CAAD,EAgHbmE,EAAMnE,EAAO,CACxB,gBACA,aACA,WACA,qBACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,YAtLwB,CAAD,EAyLZsE,EAAStE,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,eACA,cACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,OArD2B,CAAD,EAwDfyE,EAAMzE,EAAO,CACxB,aACA,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,WAAc,IACd,MAAS,IACT,OAAU,GACV,UAAa,GACb,cAAiB,EACjB,WAAc,GACd,cAAiB,GACjB,aAAgB,SAChB,gBAAmB,EACnB,YAAe,GACf,aAAgB,GAChB,eAAkB,0BAClB,WAAc,GACd,gBAAmB,GACnB,cAAiB,KACjB,aAAgB,CACd,UACA,UACA,UACA,UACA,UACA,SACF,EACA,aAAgB,CACd,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,eAAkB,CAChB,MACF,CACF,EACA,MAAS,CACP,YAAe,GACf,eAAkB,GAClB,oBAAuB,GACvB,cAAiB,GACjB,QAAW,EACX,WAAc,GACd,gBAAmB,gBACnB,WAAc,EAChB,EACA,MAAS,CACP,YAAe,GACf,eAAkB,GAClB,cAAiB,GACjB,SAAY,EACZ,QAAW,EACX,WAAc,GACd,WAAc,IACd,WAAc,GACd,UAAa,GACb,WAAc,EACd,YAAe,EACf,eAAkB,KAClB,SAAY,GACZ,YAAe,GACf,iBAAoB,KACpB,kBAAqB,GACrB,OAAU,EACV,gBAAmB,eACrB,EACA,GAAM,CACJ,YAAe,GACf,eAAkB,GAClB,eAAkB,GAClB,gBAAmB,KACnB,eAAkB,IAClB,gBAAmB,GACnB,cAAiB,GACjB,OAAU,OACV,KAAQ,WACR,SAAY,EACd,EACA,IAAO,CACL,YAAe,GACf,aAAgB,GAClB,EACA,cAAiB,CACf,YAAe,GACf,WAAc,IACd,YAAe,IACf,cAAiB,GACjB,aAAgB,GAChB,gBAAmB,EACnB,kBAAqB,EACrB,kBAAqB,EACrB,mBAAsB,GACtB,mBAAsB,GACtB,sBAAyB,GACzB,uBAA0B,EAC1B,iBAAoB,EACpB,mBAAsB,GACtB,YAAe,EACf,cAAiB,MACjB,cAAiB,OACjB,kCAAqC,EACrC,kCAAqC,CACvC,EACA,YAAe,CACb,YAAe,GACf,UAAa,UACb,WAAc,OACd,iBAAoB,QACpB,kBAAqB,OACrB,eAAkB,IAClB,gBAAmB,IACnB,SAAY,GACZ,aAAgB,GAChB,YAAe,EACjB,EACA,QAAW,CACT,YAAe,GACf,QAAW,GACX,aAAgB,GAClB,EACA,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", + "names": ["require_dayjs_min", "__commonJSMin", "exports", "module", "n", "r", "i", "s", "u", "a", "o", "f", "h", "c", "d", "l", "$", "y", "M", "t", "e", "m", "g", "D", "p", "_", "S", "w", "O", "v", "T", "require_dist", "__commonJSMin", "exports", "invalidProtocolRegex", "htmlEntitiesRegex", "htmlCtrlEntityRegex", "ctrlCharactersRegex", "urlSchemeRegex", "relativeFirstCharacters", "isRelativeUrlWithoutProtocol", "url", "decodeHtmlCharacters", "str", "match", "dec", "sanitizeUrl", "sanitizedUrl", "urlSchemeParseResults", "urlScheme", "entries", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "Object", "freeze", "seal", "create", "apply", "construct", "Reflect", "fun", "thisValue", "args", "x", "Func", "arrayForEach", "unapply", "Array", "prototype", "forEach", "arrayPop", "pop", "arrayPush", "push", "stringToLowerCase", "String", "toLowerCase", "stringToString", "toString", "stringMatch", "match", "stringReplace", "replace", "stringIndexOf", "indexOf", "stringTrim", "trim", "regExpTest", "RegExp", "test", "typeErrorCreate", "unconstruct", "TypeError", "func", "thisArg", "_len", "_key", "_len2", "_key2", "addToSet", "set", "array", "transformCaseFunc", "_transformCaseFunc", "l", "length", "element", "lcElement", "clone", "object", "newObject", "property", "value", "lookupGetter", "prop", "desc", "get", "fallbackValue", "console", "warn", "html", "svg", "svgFilters", "svgDisallowed", "mathMl", "mathMlDisallowed", "text", "xml", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_ALLOWED_URI", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "DOCTYPE_NAME", "getGlobal", "window", "_createTrustedTypesPolicy", "trustedTypes", "purifyHostElement", "createPolicy", "suffix", "ATTR_NAME", "hasAttribute", "getAttribute", "policyName", "createHTML", "createScriptURL", "scriptUrl", "createDOMPurify", "DOMPurify", "root", "version", "VERSION", "removed", "document", "nodeType", "isSupported", "originalDocument", "currentScript", "DocumentFragment", "HTMLTemplateElement", "Node", "Element", "NodeFilter", "NamedNodeMap", "MozNamedAttrMap", "HTMLFormElement", "DOMParser", "ElementPrototype", "cloneNode", "getNextSibling", "getChildNodes", "getParentNode", "template", "createElement", "content", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "implementation", "createNodeIterator", "createDocumentFragment", "getElementsByTagName", "importNode", "hooks", "createHTMLDocument", "undefined", "EXPRESSIONS", "ALLOWED_TAGS", "DEFAULT_ALLOWED_TAGS", "TAGS", "ALLOWED_ATTR", "DEFAULT_ALLOWED_ATTR", "ATTRS", "CUSTOM_ELEMENT_HANDLING", "tagNameCheck", "writable", "configurable", "enumerable", "attributeNameCheck", "allowCustomizedBuiltInElements", "FORBID_TAGS", "FORBID_ATTR", "ALLOW_ARIA_ATTR", "ALLOW_DATA_ATTR", "ALLOW_UNKNOWN_PROTOCOLS", "ALLOW_SELF_CLOSE_IN_ATTR", "SAFE_FOR_TEMPLATES", "WHOLE_DOCUMENT", "SET_CONFIG", "FORCE_BODY", "RETURN_DOM", "RETURN_DOM_FRAGMENT", "RETURN_TRUSTED_TYPE", "SANITIZE_DOM", "SANITIZE_NAMED_PROPS", "SANITIZE_NAMED_PROPS_PREFIX", "KEEP_CONTENT", "IN_PLACE", "USE_PROFILES", "FORBID_CONTENTS", "DEFAULT_FORBID_CONTENTS", "DATA_URI_TAGS", "DEFAULT_DATA_URI_TAGS", "URI_SAFE_ATTRIBUTES", "DEFAULT_URI_SAFE_ATTRIBUTES", "MATHML_NAMESPACE", "SVG_NAMESPACE", "HTML_NAMESPACE", "NAMESPACE", "IS_EMPTY_INPUT", "ALLOWED_NAMESPACES", "DEFAULT_ALLOWED_NAMESPACES", "PARSER_MEDIA_TYPE", "SUPPORTED_PARSER_MEDIA_TYPES", "DEFAULT_PARSER_MEDIA_TYPE", "CONFIG", "formElement", "isRegexOrFunction", "testValue", "Function", "_parseConfig", "cfg", "ADD_URI_SAFE_ATTR", "ADD_DATA_URI_TAGS", "ALLOWED_URI_REGEXP", "ADD_TAGS", "ADD_ATTR", "table", "tbody", "TRUSTED_TYPES_POLICY", "MATHML_TEXT_INTEGRATION_POINTS", "HTML_INTEGRATION_POINTS", "COMMON_SVG_AND_HTML_ELEMENTS", "ALL_SVG_TAGS", "ALL_MATHML_TAGS", "_checkValidNamespace", "parent", "tagName", "namespaceURI", "parentTagName", "Boolean", "_forceRemove", "node", "parentNode", "removeChild", "remove", "_removeAttribute", "name", "attribute", "getAttributeNode", "from", "removeAttribute", "setAttribute", "_initDocument", "dirty", "doc", "leadingWhitespace", "matches", "dirtyPayload", "parseFromString", "documentElement", "createDocument", "innerHTML", "body", "insertBefore", "createTextNode", "childNodes", "call", "_createIterator", "SHOW_ELEMENT", "SHOW_COMMENT", "SHOW_TEXT", "_isClobbered", "elm", "nodeName", "textContent", "attributes", "hasChildNodes", "_isNode", "_executeHook", "entryPoint", "currentNode", "data", "hook", "_sanitizeElements", "allowedTags", "firstElementChild", "_basicCustomElementTest", "childCount", "i", "_isValidAttribute", "lcTag", "lcName", "_sanitizeAttributes", "attr", "hookEvent", "attrName", "attrValue", "keepAttr", "allowedAttributes", "forceKeepAttr", "getAttributeType", "setAttributeNS", "_sanitizeShadowDOM", "fragment", "shadowNode", "shadowIterator", "nextNode", "sanitize", "importedNode", "returnNode", "appendChild", "firstChild", "nodeIterator", "shadowroot", "shadowrootmode", "serializedHTML", "outerHTML", "doctype", "setConfig", "clearConfig", "isValidAttribute", "tag", "addHook", "hookFunction", "removeHook", "removeHooks", "removeAllHooks", "purify", "dedent", "templ", "values", "_i", "strings", "indentLengths", "arr", "str", "matches", "match", "_a", "_b", "pattern_1", "string", "value", "i", "endentations", "endentation", "indentedValue", "max", "values", "valueof", "value", "index", "min", "values", "valueof", "value", "index", "ascending", "a", "b", "descending", "a", "b", "bisector", "f", "compare1", "compare2", "delta", "ascending", "d", "x", "descending", "zero", "left", "a", "lo", "hi", "mid", "right", "center", "i", "number", "x", "ascendingBisect", "bisector", "ascending", "bisectRight", "bisectLeft", "bisectCenter", "number", "bisect_default", "InternMap", "entries", "key", "keyof", "value", "intern_get", "intern_set", "intern_delete", "intern_get", "_intern", "_key", "value", "key", "intern_set", "intern_delete", "keyof", "e10", "e5", "e2", "tickSpec", "start", "stop", "count", "step", "power", "error", "factor", "i1", "i2", "inc", "ticks", "reverse", "n", "i", "tickIncrement", "tickStep", "identity_default", "x", "top", "right", "bottom", "left", "epsilon", "translateX", "x", "translateY", "y", "number", "scale", "d", "center", "offset", "entering", "axis", "orient", "tickArguments", "tickValues", "tickFormat", "tickSizeInner", "tickSizeOuter", "tickPadding", "k", "transform", "context", "values", "format", "identity_default", "spacing", "range", "range0", "range1", "position", "selection", "path", "tick", "tickExit", "tickEnter", "line", "text", "p", "_", "axisTop", "axisBottom", "scale", "axis", "bottom", "none", "selector_default", "selector", "select_default", "select", "selector_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "subnode", "i", "Selection", "array", "x", "empty", "selectorAll_default", "selector", "arrayAll", "select", "array", "selectAll_default", "selectorAll_default", "groups", "m", "subgroups", "parents", "j", "group", "n", "node", "i", "Selection", "matcher_default", "selector", "childMatcher", "node", "find", "childFind", "match", "childFirst", "selectChild_default", "childMatcher", "filter", "children", "childrenFilter", "match", "selectChildren_default", "childMatcher", "filter_default", "match", "matcher_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "i", "Selection", "sparse_default", "update", "enter_default", "Selection", "sparse_default", "EnterNode", "parent", "datum", "child", "next", "selector", "constant_default", "x", "bindIndex", "parent", "group", "enter", "update", "exit", "data", "i", "node", "groupLength", "dataLength", "EnterNode", "bindKey", "key", "nodeByKeyValue", "keyValues", "keyValue", "datum", "data_default", "value", "bind", "parents", "groups", "constant_default", "m", "j", "arraylike", "enterGroup", "updateGroup", "exitGroup", "i0", "i1", "previous", "next", "Selection", "exit_default", "Selection", "sparse_default", "join_default", "onenter", "onupdate", "onexit", "enter", "update", "exit", "merge_default", "context", "selection", "groups0", "groups1", "m0", "m1", "m", "merges", "j", "group0", "group1", "n", "merge", "node", "i", "Selection", "order_default", "groups", "j", "m", "group", "i", "next", "node", "sort_default", "compare", "ascending", "compareNode", "a", "b", "groups", "m", "sortgroups", "j", "group", "n", "sortgroup", "node", "i", "Selection", "call_default", "callback", "nodes_default", "node_default", "groups", "j", "m", "group", "i", "n", "node", "size_default", "size", "node", "empty_default", "each_default", "callback", "groups", "j", "m", "group", "i", "n", "node", "xhtml", "namespaces_default", "namespace_default", "name", "prefix", "i", "namespaces_default", "attrRemove", "name", "attrRemoveNS", "fullname", "attrConstant", "value", "attrConstantNS", "attrFunction", "v", "attrFunctionNS", "attr_default", "namespace_default", "node", "window_default", "node", "styleRemove", "name", "styleConstant", "value", "priority", "styleFunction", "v", "style_default", "styleValue", "node", "window_default", "propertyRemove", "name", "propertyConstant", "value", "propertyFunction", "v", "property_default", "classArray", "string", "classList", "node", "ClassList", "name", "i", "classedAdd", "names", "list", "classedRemove", "classedTrue", "classedFalse", "classedFunction", "value", "classed_default", "n", "textRemove", "textConstant", "value", "textFunction", "v", "text_default", "htmlRemove", "htmlConstant", "value", "htmlFunction", "v", "html_default", "raise", "raise_default", "lower", "lower_default", "creatorInherit", "name", "document", "uri", "xhtml", "creatorFixed", "fullname", "creator_default", "namespace_default", "append_default", "name", "create", "creator_default", "constantNull", "insert_default", "name", "before", "create", "creator_default", "select", "selector_default", "remove", "parent", "remove_default", "selection_cloneShallow", "clone", "parent", "selection_cloneDeep", "clone_default", "deep", "datum_default", "value", "contextListener", "listener", "event", "parseTypenames", "typenames", "t", "name", "onRemove", "typename", "on", "j", "m", "onAdd", "value", "options", "o", "on_default", "i", "n", "dispatchEvent", "node", "type", "params", "window", "window_default", "event", "dispatchConstant", "dispatchFunction", "dispatch_default", "iterator_default", "groups", "j", "m", "group", "i", "n", "node", "root", "Selection", "groups", "parents", "selection", "selection_selection", "select_default", "selectAll_default", "selectChild_default", "selectChildren_default", "filter_default", "data_default", "enter_default", "exit_default", "join_default", "merge_default", "order_default", "sort_default", "call_default", "nodes_default", "node_default", "size_default", "empty_default", "each_default", "attr_default", "style_default", "property_default", "classed_default", "text_default", "html_default", "raise_default", "lower_default", "append_default", "insert_default", "remove_default", "clone_default", "datum_default", "on_default", "dispatch_default", "iterator_default", "selection_default", "select_default", "selector", "Selection", "root", "selectAll_default", "selector", "Selection", "array", "root", "define_default", "constructor", "factory", "prototype", "extend", "parent", "definition", "key", "Color", "darker", "brighter", "reI", "reN", "reP", "reHex", "reRgbInteger", "reRgbPercent", "reRgbaInteger", "reRgbaPercent", "reHslPercent", "reHslaPercent", "named", "define_default", "color", "channels", "color_formatHex", "color_formatHex8", "color_formatHsl", "color_formatRgb", "hslConvert", "format", "m", "l", "rgbn", "Rgb", "rgba", "hsla", "n", "r", "g", "b", "a", "rgbConvert", "o", "rgb", "opacity", "extend", "k", "clampi", "clampa", "rgb_formatHex", "rgb_formatHex8", "rgb_formatRgb", "hex", "value", "h", "s", "Hsl", "min", "max", "hsl", "m2", "m1", "hsl2rgb", "clamph", "clampt", "radians", "degrees", "K", "Xn", "Yn", "Zn", "t0", "t1", "t2", "t3", "labConvert", "o", "Lab", "Hcl", "hcl2lab", "Rgb", "rgbConvert", "r", "rgb2lrgb", "g", "b", "y", "xyz2lab", "x", "z", "lab", "l", "a", "b", "opacity", "labConvert", "Lab", "define_default", "extend", "Color", "k", "K", "y", "x", "z", "Xn", "lab2xyz", "Yn", "Zn", "Rgb", "lrgb2rgb", "xyz2lab", "t3", "t2", "t0", "t1", "rgb2lrgb", "hclConvert", "o", "Hcl", "h", "degrees", "hcl", "h", "c", "l", "opacity", "hclConvert", "Hcl", "hcl2lab", "o", "Lab", "radians", "define_default", "extend", "Color", "k", "K", "constant_default", "x", "linear", "a", "d", "t", "exponential", "b", "y", "hue", "constant_default", "gamma", "nogamma", "hcl", "hue", "start", "end", "h", "c", "nogamma", "l", "opacity", "t", "hcl_default", "hclLong", "basis", "t1", "v0", "v1", "v2", "v3", "t2", "t3", "basis_default", "values", "n", "t", "basisClosed_default", "values", "n", "t", "v0", "v1", "v2", "v3", "basis", "rgb_default", "rgbGamma", "y", "color", "gamma", "rgb", "start", "end", "r", "g", "b", "opacity", "nogamma", "t", "rgbSpline", "spline", "colors", "n", "i", "rgbBasis", "basis_default", "rgbBasisClosed", "basisClosed_default", "numberArray_default", "a", "b", "n", "c", "i", "t", "isNumberArray", "x", "genericArray", "a", "b", "nb", "na", "x", "c", "i", "value_default", "t", "date_default", "a", "b", "d", "t", "number_default", "a", "b", "t", "object_default", "a", "b", "i", "c", "k", "value_default", "t", "reA", "reB", "zero", "b", "one", "t", "string_default", "a", "bi", "am", "bm", "bs", "i", "q", "number_default", "o", "value_default", "a", "b", "t", "c", "constant_default", "number_default", "color", "rgb_default", "string_default", "date_default", "isNumberArray", "numberArray_default", "genericArray", "object_default", "round_default", "a", "b", "t", "degrees", "identity", "decompose_default", "a", "b", "c", "d", "e", "f", "scaleX", "scaleY", "skewX", "svgNode", "parseCss", "value", "m", "identity", "decompose_default", "parseSvg", "interpolateTransform", "parse", "pxComma", "pxParen", "degParen", "pop", "s", "translate", "xa", "ya", "xb", "yb", "q", "i", "number_default", "rotate", "a", "b", "skewX", "scale", "t", "n", "o", "interpolateTransformCss", "parseCss", "interpolateTransformSvg", "parseSvg", "initRange", "domain", "range", "implicit", "ordinal", "index", "InternMap", "domain", "range", "unknown", "scale", "d", "i", "_", "value", "initRange", "constants", "x", "number", "x", "unit", "identity", "x", "normalize", "a", "b", "constants", "clamper", "t", "bimap", "domain", "range", "interpolate", "d0", "d1", "r0", "r1", "polymap", "j", "d", "r", "i", "bisect_default", "copy", "source", "target", "transformer", "value_default", "transform", "untransform", "unknown", "clamp", "piecewise", "output", "input", "rescale", "n", "scale", "y", "number_default", "_", "number", "round_default", "u", "continuous", "formatDecimal_default", "x", "formatDecimalParts", "p", "i", "coefficient", "exponent_default", "x", "formatDecimalParts", "formatGroup_default", "grouping", "thousands", "value", "width", "i", "t", "j", "g", "length", "formatNumerals_default", "numerals", "value", "i", "re", "formatSpecifier", "specifier", "match", "FormatSpecifier", "formatTrim_default", "s", "out", "n", "i", "i0", "i1", "prefixExponent", "formatPrefixAuto_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "i", "n", "formatRounded_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "formatTypes_default", "x", "p", "formatDecimal_default", "formatRounded_default", "formatPrefixAuto_default", "identity_default", "x", "map", "prefixes", "locale_default", "locale", "group", "identity_default", "formatGroup_default", "currencyPrefix", "currencySuffix", "decimal", "numerals", "formatNumerals_default", "percent", "minus", "nan", "newFormat", "specifier", "formatSpecifier", "fill", "align", "sign", "symbol", "zero", "width", "comma", "precision", "trim", "type", "formatTypes_default", "prefix", "suffix", "formatType", "maybeSuffix", "format", "value", "valuePrefix", "valueSuffix", "i", "n", "c", "valueNegative", "formatTrim_default", "prefixExponent", "length", "padding", "formatPrefix", "f", "e", "exponent_default", "k", "locale", "format", "formatPrefix", "defaultLocale", "definition", "locale_default", "precisionFixed_default", "step", "exponent_default", "precisionPrefix_default", "step", "value", "exponent_default", "precisionRound_default", "step", "max", "exponent_default", "tickFormat", "start", "stop", "count", "specifier", "step", "tickStep", "precision", "formatSpecifier", "value", "precisionPrefix_default", "formatPrefix", "precisionRound_default", "precisionFixed_default", "format", "linearish", "scale", "domain", "count", "d", "ticks", "specifier", "tickFormat", "i0", "i1", "start", "stop", "prestep", "step", "maxIter", "tickIncrement", "linear", "continuous", "copy", "initRange", "t0", "t1", "timeInterval", "floori", "offseti", "count", "field", "interval", "date", "d0", "d1", "step", "start", "stop", "range", "previous", "test", "end", "d", "millisecond", "timeInterval", "date", "step", "start", "end", "k", "milliseconds", "second", "timeInterval", "date", "step", "start", "end", "seconds", "timeMinute", "timeInterval", "date", "step", "start", "end", "timeMinutes", "utcMinute", "utcMinutes", "timeHour", "timeInterval", "date", "step", "start", "end", "timeHours", "utcHour", "utcHours", "timeDay", "timeInterval", "date", "step", "start", "end", "timeDays", "utcDay", "utcDays", "unixDay", "unixDays", "timeWeekday", "i", "timeInterval", "date", "step", "start", "end", "timeSunday", "timeMonday", "timeTuesday", "timeWednesday", "timeThursday", "timeFriday", "timeSaturday", "timeSundays", "timeMondays", "timeTuesdays", "timeWednesdays", "timeThursdays", "timeFridays", "timeSaturdays", "utcWeekday", "utcSunday", "utcMonday", "utcTuesday", "utcWednesday", "utcThursday", "utcFriday", "utcSaturday", "utcSundays", "utcMondays", "utcTuesdays", "utcWednesdays", "utcThursdays", "utcFridays", "utcSaturdays", "timeMonth", "timeInterval", "date", "step", "start", "end", "timeMonths", "utcMonth", "utcMonths", "timeYear", "timeInterval", "date", "step", "start", "end", "k", "timeYears", "utcYear", "utcYears", "ticker", "year", "month", "week", "day", "hour", "minute", "tickIntervals", "second", "ticks", "start", "stop", "count", "reverse", "interval", "tickInterval", "target", "i", "bisector", "step", "tickStep", "millisecond", "t", "utcTicks", "utcTickInterval", "utcYear", "utcMonth", "utcSunday", "unixDay", "utcHour", "utcMinute", "timeTicks", "timeTickInterval", "timeYear", "timeMonth", "timeSunday", "timeDay", "timeHour", "timeMinute", "localDate", "d", "date", "utcDate", "newDate", "y", "m", "formatLocale", "locale", "locale_dateTime", "locale_date", "locale_time", "locale_periods", "locale_weekdays", "locale_shortWeekdays", "locale_months", "locale_shortMonths", "periodRe", "formatRe", "periodLookup", "formatLookup", "weekdayRe", "weekdayLookup", "shortWeekdayRe", "shortWeekdayLookup", "monthRe", "monthLookup", "shortMonthRe", "shortMonthLookup", "formats", "formatShortWeekday", "formatWeekday", "formatShortMonth", "formatMonth", "formatDayOfMonth", "formatMicroseconds", "formatYearISO", "formatFullYearISO", "formatHour24", "formatHour12", "formatDayOfYear", "formatMilliseconds", "formatMonthNumber", "formatMinutes", "formatPeriod", "formatQuarter", "formatUnixTimestamp", "formatUnixTimestampSeconds", "formatSeconds", "formatWeekdayNumberMonday", "formatWeekNumberSunday", "formatWeekNumberISO", "formatWeekdayNumberSunday", "formatWeekNumberMonday", "formatYear", "formatFullYear", "formatZone", "formatLiteralPercent", "utcFormats", "formatUTCShortWeekday", "formatUTCWeekday", "formatUTCShortMonth", "formatUTCMonth", "formatUTCDayOfMonth", "formatUTCMicroseconds", "formatUTCYearISO", "formatUTCFullYearISO", "formatUTCHour24", "formatUTCHour12", "formatUTCDayOfYear", "formatUTCMilliseconds", "formatUTCMonthNumber", "formatUTCMinutes", "formatUTCPeriod", "formatUTCQuarter", "formatUTCSeconds", "formatUTCWeekdayNumberMonday", "formatUTCWeekNumberSunday", "formatUTCWeekNumberISO", "formatUTCWeekdayNumberSunday", "formatUTCWeekNumberMonday", "formatUTCYear", "formatUTCFullYear", "formatUTCZone", "parses", "parseShortWeekday", "parseWeekday", "parseShortMonth", "parseMonth", "parseLocaleDateTime", "parseDayOfMonth", "parseMicroseconds", "parseYear", "parseFullYear", "parseHour24", "parseDayOfYear", "parseMilliseconds", "parseMonthNumber", "parseMinutes", "parsePeriod", "parseQuarter", "parseUnixTimestamp", "parseUnixTimestampSeconds", "parseSeconds", "parseWeekdayNumberMonday", "parseWeekNumberSunday", "parseWeekNumberISO", "parseWeekdayNumberSunday", "parseWeekNumberMonday", "parseLocaleDate", "parseLocaleTime", "parseZone", "parseLiteralPercent", "newFormat", "specifier", "string", "i", "j", "n", "c", "pad", "format", "pads", "newParse", "Z", "parseSpecifier", "week", "day", "utcMonday", "utcDay", "timeMonday", "timeDay", "parse", "f", "p", "numberRe", "percentRe", "requoteRe", "value", "fill", "width", "sign", "length", "requote", "s", "names", "name", "timeYear", "timeSunday", "dISO", "timeThursday", "z", "utcYear", "dow", "utcSunday", "UTCdISO", "utcThursday", "locale", "timeFormat", "timeParse", "utcFormat", "utcParse", "defaultLocale", "definition", "formatLocale", "nice", "domain", "interval", "i0", "i1", "x0", "x1", "t", "date", "number", "calendar", "ticks", "tickInterval", "year", "month", "week", "day", "hour", "minute", "second", "format", "scale", "continuous", "invert", "domain", "formatMillisecond", "formatSecond", "formatMinute", "formatHour", "formatDay", "formatWeek", "formatMonth", "formatYear", "tickFormat", "y", "_", "interval", "d", "count", "specifier", "nice", "copy", "time", "initRange", "timeTicks", "timeTickInterval", "timeYear", "timeMonth", "timeSunday", "timeDay", "timeHour", "timeMinute", "timeFormat", "colors_default", "specifier", "n", "colors", "Tableau10_default", "colors_default", "constant_default", "x", "abs", "atan2", "cos", "max", "min", "sin", "sqrt", "epsilon", "pi", "halfPi", "tau", "acos", "x", "asin", "pi", "tau", "epsilon", "tauEpsilon", "append", "strings", "i", "n", "appendRound", "digits", "d", "k", "Path", "x", "y", "x1", "y1", "x2", "y2", "r", "x0", "y0", "x21", "y21", "x01", "y01", "l01_2", "x20", "y20", "l21_2", "l20_2", "l21", "l01", "l", "t01", "t21", "a0", "a1", "ccw", "dx", "dy", "cw", "da", "w", "h", "path", "withPath", "shape", "digits", "_", "d", "Path", "arcInnerRadius", "d", "arcOuterRadius", "arcStartAngle", "arcEndAngle", "arcPadAngle", "intersect", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "x10", "y10", "x32", "y32", "t", "epsilon", "cornerTangents", "r1", "rc", "cw", "x01", "y01", "lo", "sqrt", "ox", "oy", "x11", "y11", "x00", "y00", "dx", "dy", "d2", "r", "D", "max", "cx0", "cy0", "cx1", "cy1", "dx0", "dy0", "dx1", "dy1", "arc_default", "innerRadius", "outerRadius", "cornerRadius", "constant_default", "padRadius", "startAngle", "endAngle", "padAngle", "context", "path", "withPath", "arc", "buffer", "r0", "a0", "halfPi", "a1", "da", "abs", "tau", "cos", "sin", "a01", "a11", "a00", "a10", "da0", "da1", "ap", "rp", "min", "rc0", "rc1", "t0", "t1", "p0", "asin", "p1", "oc", "pi", "ax", "ay", "bx", "by", "kc", "acos", "lc", "atan2", "a", "_", "Linear", "context", "x", "y", "linear_default", "slice", "array_default", "x", "x", "p", "y", "line_default", "x", "y", "defined", "constant_default", "context", "curve", "linear_default", "output", "path", "withPath", "line", "data", "i", "n", "array_default", "d", "defined0", "buffer", "_", "descending_default", "a", "b", "identity_default", "d", "pie_default", "value", "identity_default", "sortValues", "descending_default", "sort", "startAngle", "constant_default", "endAngle", "tau", "padAngle", "pie", "data", "i", "n", "array_default", "j", "k", "sum", "index", "arcs", "a0", "da", "a1", "p", "pa", "v", "_", "point", "that", "x", "y", "Basis", "context", "basis_default", "Bump", "context", "x", "y", "bumpX", "context", "Bump", "bumpY", "noop_default", "BasisClosed", "context", "noop_default", "x", "y", "point", "basisClosed_default", "BasisOpen", "context", "x", "y", "x0", "y0", "point", "basisOpen_default", "Bundle", "context", "beta", "Basis", "x", "y", "j", "x0", "y0", "dx", "dy", "i", "t", "bundle_default", "custom", "bundle", "point", "that", "x", "y", "Cardinal", "context", "tension", "cardinal_default", "custom", "cardinal", "CardinalClosed", "context", "tension", "noop_default", "x", "y", "point", "cardinalClosed_default", "custom", "cardinal", "CardinalOpen", "context", "tension", "x", "y", "point", "cardinalOpen_default", "custom", "cardinal", "point", "that", "x", "y", "x1", "y1", "x2", "y2", "epsilon", "a", "n", "b", "m", "CatmullRom", "context", "alpha", "x23", "y23", "catmullRom_default", "custom", "catmullRom", "Cardinal", "CatmullRomClosed", "context", "alpha", "noop_default", "x", "y", "x23", "y23", "point", "catmullRomClosed_default", "custom", "catmullRom", "CardinalClosed", "CatmullRomOpen", "context", "alpha", "x", "y", "x23", "y23", "point", "catmullRomOpen_default", "custom", "catmullRom", "CardinalOpen", "LinearClosed", "context", "noop_default", "x", "y", "linearClosed_default", "sign", "x", "slope3", "that", "x2", "y2", "h0", "h1", "s0", "s1", "p", "slope2", "t", "h", "point", "t0", "t1", "x0", "y0", "x1", "y1", "dx", "MonotoneX", "context", "y", "MonotoneY", "ReflectContext", "monotoneX", "monotoneY", "Natural", "context", "x", "y", "n", "px", "controlPoints", "py", "i0", "i1", "i", "m", "a", "b", "r", "natural_default", "Step", "context", "t", "x", "y", "x1", "step_default", "stepBefore", "stepAfter", "noop", "dispatch", "i", "n", "_", "t", "Dispatch", "parseTypenames", "typenames", "types", "name", "typename", "callback", "T", "get", "set", "copy", "type", "that", "args", "c", "dispatch_default", "frame", "timeout", "interval", "pokeDelay", "taskHead", "taskTail", "clockLast", "clockNow", "clockSkew", "clock", "setFrame", "f", "now", "clearNow", "Timer", "timer", "callback", "delay", "time", "sleep", "t", "timerFlush", "wake", "nap", "poke", "t0", "t1", "t2", "timeout_default", "callback", "delay", "time", "t", "Timer", "elapsed", "emptyOn", "dispatch_default", "emptyTween", "CREATED", "SCHEDULED", "STARTING", "STARTED", "RUNNING", "ENDING", "ENDED", "schedule_default", "node", "name", "id", "index", "group", "timing", "schedules", "create", "init", "schedule", "get", "set", "self", "tween", "timer", "elapsed", "start", "i", "j", "n", "o", "stop", "timeout_default", "tick", "t", "interrupt_default", "node", "name", "schedules", "schedule", "active", "empty", "i", "STARTING", "ENDING", "ENDED", "interrupt_default", "name", "tweenRemove", "id", "name", "tween0", "tween1", "schedule", "set", "tween", "i", "n", "tweenFunction", "value", "t", "tween_default", "get", "tweenValue", "transition", "node", "interpolate_default", "a", "b", "c", "number_default", "color", "rgb_default", "string_default", "attrRemove", "name", "attrRemoveNS", "fullname", "attrConstant", "interpolate", "value1", "string00", "string1", "interpolate0", "string0", "attrConstantNS", "attrFunction", "value", "string10", "attrFunctionNS", "attr_default", "namespace_default", "interpolateTransformSvg", "interpolate_default", "tweenValue", "attrInterpolate", "name", "i", "t", "attrInterpolateNS", "fullname", "attrTweenNS", "value", "t0", "i0", "tween", "attrTween", "attrTween_default", "key", "namespace_default", "delayFunction", "id", "value", "init", "delayConstant", "delay_default", "get", "durationFunction", "id", "value", "set", "durationConstant", "duration_default", "get", "easeConstant", "id", "value", "set", "ease_default", "get", "easeVarying", "id", "value", "v", "set", "easeVarying_default", "filter_default", "match", "matcher_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "i", "Transition", "merge_default", "transition", "groups0", "groups1", "m0", "m1", "m", "merges", "j", "group0", "group1", "n", "merge", "node", "i", "Transition", "start", "name", "t", "i", "onFunction", "id", "listener", "on0", "on1", "sit", "init", "set", "schedule", "on", "on_default", "get", "removeFunction", "id", "parent", "i", "remove_default", "select_default", "select", "name", "id", "selector_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "subnode", "i", "schedule_default", "get", "Transition", "selectAll_default", "select", "name", "id", "selectorAll_default", "groups", "m", "subgroups", "parents", "j", "group", "n", "node", "i", "children", "child", "inherit", "get", "k", "l", "schedule_default", "Transition", "Selection", "selection_default", "styleNull", "name", "interpolate", "string00", "string10", "interpolate0", "string0", "styleValue", "string1", "styleRemove", "styleConstant", "value1", "styleFunction", "value", "styleMaybeRemove", "id", "on0", "on1", "listener0", "key", "event", "remove", "schedule", "set", "on", "listener", "style_default", "priority", "interpolateTransformCss", "interpolate_default", "tweenValue", "styleInterpolate", "name", "i", "priority", "t", "styleTween", "value", "i0", "tween", "styleTween_default", "key", "textConstant", "value", "textFunction", "value1", "text_default", "tweenValue", "textInterpolate", "i", "t", "textTween", "value", "t0", "i0", "tween", "textTween_default", "key", "transition_default", "name", "id0", "id1", "newId", "groups", "m", "j", "group", "n", "node", "i", "inherit", "get", "schedule_default", "Transition", "end_default", "on0", "on1", "that", "id", "size", "resolve", "reject", "cancel", "end", "schedule", "set", "on", "id", "Transition", "groups", "parents", "name", "transition", "selection_default", "newId", "selection_prototype", "select_default", "selectAll_default", "filter_default", "merge_default", "transition_default", "on_default", "attr_default", "attrTween_default", "style_default", "styleTween_default", "text_default", "textTween_default", "remove_default", "tween_default", "delay_default", "duration_default", "ease_default", "easeVarying_default", "end_default", "cubicInOut", "defaultTiming", "cubicInOut", "inherit", "node", "id", "timing", "transition_default", "name", "Transition", "newId", "now", "groups", "m", "j", "group", "n", "i", "schedule_default", "selection_default", "interrupt_default", "transition_default", "abs", "max", "min", "number1", "e", "number2", "X", "type", "x", "xy", "Y", "y", "XY", "type", "responseText", "response", "text_default", "input", "init", "parser", "type", "input", "init", "text_default", "text", "xml_default", "html", "svg", "Transform", "k", "x", "y", "point", "location", "identity", "transform", "node", "Channel", "r", "g", "b", "h", "s", "l", "a", "c", "n", "p", "q", "t", "channel", "max", "min", "d", "channel_default", "Lang", "number", "lower", "upper", "lang_default", "Unit", "dec", "hex", "unit_default", "Utils", "channel_default", "lang_default", "unit_default", "utils_default", "DEC2HEX", "i", "utils_default", "TYPE", "Type", "TYPE", "type", "type_default", "Channels", "data", "color", "type_default", "TYPE", "h", "s", "l", "utils_default", "g", "b", "r", "a", "channels_default", "channels", "channels_default", "reusable_default", "Hex", "color", "match", "hex", "dec", "length", "hasAlpha", "isFullLength", "multiplier", "bits", "bitsOffset", "mask", "reusable_default", "channels", "r", "g", "b", "a", "DEC2HEX", "hex_default", "HSL", "hue", "match", "number", "unit", "utils_default", "color", "charCode", "h", "s", "l", "isAlphaPercentage", "reusable_default", "channels", "a", "hsl_default", "Keyword", "color", "hex", "hex_default", "channels", "name", "keyword_default", "RGB", "color", "charCode", "match", "r", "isRedPercentage", "g", "isGreenPercentage", "b", "isBluePercentage", "a", "isAlphaPercentage", "reusable_default", "utils_default", "channels", "rgb_default", "Color", "keyword_default", "hex_default", "rgb_default", "hsl_default", "color", "channels", "TYPE", "color_default", "luminance", "color", "r", "g", "b", "color_default", "utils_default", "luminance_default", "isLight", "color", "luminance_default", "is_light_default", "isDark", "color", "is_light_default", "is_dark_default", "adjustChannel", "color", "channel", "amount", "channels", "color_default", "amountCurrent", "amountNext", "utils_default", "adjust_channel_default", "lighten", "color", "amount", "adjust_channel_default", "lighten_default", "darken", "color", "amount", "adjust_channel_default", "darken_default", "change", "color", "channels", "ch", "color_default", "c", "utils_default", "change_default", "rgba", "r", "g", "b", "a", "change_default", "channels", "reusable_default", "utils_default", "color_default", "rgba_default", "channel", "color", "utils_default", "color_default", "channel_default", "adjust", "color", "channels", "ch", "color_default", "changes", "c", "change_default", "adjust_default", "mix", "color1", "color2", "weight", "r1", "g1", "b1", "a1", "color_default", "r2", "g2", "b2", "a2", "weightScale", "weightNormalized", "alphaDelta", "weight1", "weight2", "r", "g", "b", "a", "rgba_default", "mix_default", "invert", "color", "weight", "inverse", "color_default", "mix_default", "invert_default", "freeGlobal", "freeGlobal_default", "freeSelf", "root", "freeGlobal_default", "root_default", "Symbol", "root_default", "Symbol_default", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "Symbol_default", "getRawTag", "value", "isOwn", "tag", "unmasked", "result", "getRawTag_default", "objectProto", "nativeObjectToString", "objectToString", "value", "objectToString_default", "nullTag", "undefinedTag", "symToStringTag", "Symbol_default", "baseGetTag", "value", "getRawTag_default", "objectToString_default", "baseGetTag_default", "isObject", "value", "type", "isObject_default", "asyncTag", "funcTag", "genTag", "proxyTag", "isFunction", "value", "isObject_default", "tag", "baseGetTag_default", "isFunction_default", "coreJsData", "root_default", "coreJsData_default", "maskSrcKey", "uid", "coreJsData_default", "isMasked", "func", "isMasked_default", "funcProto", "funcToString", "toSource", "func", "toSource_default", "reRegExpChar", "reIsHostCtor", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "reIsNative", "baseIsNative", "value", "isObject_default", "isMasked_default", "pattern", "isFunction_default", "toSource_default", "baseIsNative_default", "getValue", "object", "key", "getValue_default", "getNative", "object", "key", "value", "getValue_default", "baseIsNative_default", "getNative_default", "nativeCreate", "getNative_default", "nativeCreate_default", "hashClear", "nativeCreate_default", "hashClear_default", "hashDelete", "key", "result", "hashDelete_default", "HASH_UNDEFINED", "objectProto", "hasOwnProperty", "hashGet", "key", "data", "nativeCreate_default", "result", "hashGet_default", "objectProto", "hasOwnProperty", "hashHas", "key", "data", "nativeCreate_default", "hashHas_default", "HASH_UNDEFINED", "hashSet", "key", "value", "data", "nativeCreate_default", "hashSet_default", "Hash", "entries", "index", "length", "entry", "hashClear_default", "hashDelete_default", "hashGet_default", "hashHas_default", "hashSet_default", "Hash_default", "listCacheClear", "listCacheClear_default", "eq", "value", "other", "eq_default", "assocIndexOf", "array", "key", "length", "eq_default", "assocIndexOf_default", "arrayProto", "splice", "listCacheDelete", "key", "data", "index", "assocIndexOf_default", "lastIndex", "listCacheDelete_default", "listCacheGet", "key", "data", "index", "assocIndexOf_default", "listCacheGet_default", "listCacheHas", "key", "assocIndexOf_default", "listCacheHas_default", "listCacheSet", "key", "value", "data", "index", "assocIndexOf_default", "listCacheSet_default", "ListCache", "entries", "index", "length", "entry", "listCacheClear_default", "listCacheDelete_default", "listCacheGet_default", "listCacheHas_default", "listCacheSet_default", "ListCache_default", "Map", "getNative_default", "root_default", "Map_default", "mapCacheClear", "Hash_default", "Map_default", "ListCache_default", "mapCacheClear_default", "isKeyable", "value", "type", "isKeyable_default", "getMapData", "map", "key", "data", "isKeyable_default", "getMapData_default", "mapCacheDelete", "key", "result", "getMapData_default", "mapCacheDelete_default", "mapCacheGet", "key", "getMapData_default", "mapCacheGet_default", "mapCacheHas", "key", "getMapData_default", "mapCacheHas_default", "mapCacheSet", "key", "value", "data", "getMapData_default", "size", "mapCacheSet_default", "MapCache", "entries", "index", "length", "entry", "mapCacheClear_default", "mapCacheDelete_default", "mapCacheGet_default", "mapCacheHas_default", "mapCacheSet_default", "MapCache_default", "FUNC_ERROR_TEXT", "memoize", "func", "resolver", "memoized", "args", "key", "cache", "result", "MapCache_default", "memoize_default", "stackClear", "ListCache_default", "stackClear_default", "stackDelete", "key", "data", "result", "stackDelete_default", "stackGet", "key", "stackGet_default", "stackHas", "key", "stackHas_default", "LARGE_ARRAY_SIZE", "stackSet", "key", "value", "data", "ListCache_default", "pairs", "Map_default", "MapCache_default", "stackSet_default", "Stack", "entries", "data", "ListCache_default", "stackClear_default", "stackDelete_default", "stackGet_default", "stackHas_default", "stackSet_default", "Stack_default", "defineProperty", "func", "getNative_default", "defineProperty_default", "baseAssignValue", "object", "key", "value", "defineProperty_default", "baseAssignValue_default", "assignMergeValue", "object", "key", "value", "eq_default", "baseAssignValue_default", "assignMergeValue_default", "createBaseFor", "fromRight", "object", "iteratee", "keysFunc", "index", "iterable", "props", "length", "key", "createBaseFor_default", "baseFor", "createBaseFor_default", "baseFor_default", "freeExports", "freeModule", "moduleExports", "Buffer", "root_default", "allocUnsafe", "cloneBuffer", "buffer", "isDeep", "length", "result", "cloneBuffer_default", "Uint8Array", "root_default", "Uint8Array_default", "cloneArrayBuffer", "arrayBuffer", "result", "Uint8Array_default", "cloneArrayBuffer_default", "cloneTypedArray", "typedArray", "isDeep", "buffer", "cloneArrayBuffer_default", "cloneTypedArray_default", "copyArray", "source", "array", "index", "length", "copyArray_default", "objectCreate", "baseCreate", "object", "proto", "isObject_default", "result", "baseCreate_default", "overArg", "func", "transform", "arg", "overArg_default", "getPrototype", "overArg_default", "getPrototype_default", "objectProto", "isPrototype", "value", "Ctor", "proto", "isPrototype_default", "initCloneObject", "object", "isPrototype_default", "baseCreate_default", "getPrototype_default", "initCloneObject_default", "isObjectLike", "value", "isObjectLike_default", "argsTag", "baseIsArguments", "value", "isObjectLike_default", "baseGetTag_default", "baseIsArguments_default", "objectProto", "hasOwnProperty", "propertyIsEnumerable", "isArguments", "baseIsArguments_default", "value", "isObjectLike_default", "isArguments_default", "isArray", "isArray_default", "MAX_SAFE_INTEGER", "isLength", "value", "isLength_default", "isArrayLike", "value", "isLength_default", "isFunction_default", "isArrayLike_default", "isArrayLikeObject", "value", "isObjectLike_default", "isArrayLike_default", "isArrayLikeObject_default", "stubFalse", "stubFalse_default", "freeExports", "freeModule", "moduleExports", "Buffer", "root_default", "nativeIsBuffer", "isBuffer", "stubFalse_default", "isBuffer_default", "objectTag", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "objectCtorString", "isPlainObject", "value", "isObjectLike_default", "baseGetTag_default", "proto", "getPrototype_default", "Ctor", "isPlainObject_default", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "typedArrayTags", "baseIsTypedArray", "value", "isObjectLike_default", "isLength_default", "baseGetTag_default", "baseIsTypedArray_default", "baseUnary", "func", "value", "baseUnary_default", "freeExports", "freeModule", "moduleExports", "freeProcess", "freeGlobal_default", "nodeUtil", "types", "nodeUtil_default", "nodeIsTypedArray", "nodeUtil_default", "isTypedArray", "baseUnary_default", "baseIsTypedArray_default", "isTypedArray_default", "safeGet", "object", "key", "safeGet_default", "objectProto", "hasOwnProperty", "assignValue", "object", "key", "value", "objValue", "eq_default", "baseAssignValue_default", "assignValue_default", "copyObject", "source", "props", "object", "customizer", "isNew", "index", "length", "key", "newValue", "baseAssignValue_default", "assignValue_default", "copyObject_default", "baseTimes", "n", "iteratee", "index", "result", "baseTimes_default", "MAX_SAFE_INTEGER", "reIsUint", "isIndex", "value", "length", "type", "isIndex_default", "objectProto", "hasOwnProperty", "arrayLikeKeys", "value", "inherited", "isArr", "isArray_default", "isArg", "isArguments_default", "isBuff", "isBuffer_default", "isType", "isTypedArray_default", "skipIndexes", "result", "baseTimes_default", "length", "key", "isIndex_default", "arrayLikeKeys_default", "nativeKeysIn", "object", "result", "key", "nativeKeysIn_default", "objectProto", "hasOwnProperty", "baseKeysIn", "object", "isObject_default", "nativeKeysIn_default", "isProto", "isPrototype_default", "result", "key", "baseKeysIn_default", "keysIn", "object", "isArrayLike_default", "arrayLikeKeys_default", "baseKeysIn_default", "keysIn_default", "toPlainObject", "value", "copyObject_default", "keysIn_default", "toPlainObject_default", "baseMergeDeep", "object", "source", "key", "srcIndex", "mergeFunc", "customizer", "stack", "objValue", "safeGet_default", "srcValue", "stacked", "assignMergeValue_default", "newValue", "isCommon", "isArr", "isArray_default", "isBuff", "isBuffer_default", "isTyped", "isTypedArray_default", "isArrayLikeObject_default", "copyArray_default", "cloneBuffer_default", "cloneTypedArray_default", "isPlainObject_default", "isArguments_default", "toPlainObject_default", "isObject_default", "isFunction_default", "initCloneObject_default", "baseMergeDeep_default", "baseMerge", "object", "source", "srcIndex", "customizer", "stack", "baseFor_default", "srcValue", "key", "Stack_default", "isObject_default", "baseMergeDeep_default", "newValue", "safeGet_default", "assignMergeValue_default", "keysIn_default", "baseMerge_default", "identity", "value", "identity_default", "apply", "func", "thisArg", "args", "apply_default", "nativeMax", "overRest", "func", "start", "transform", "args", "index", "length", "array", "otherArgs", "apply_default", "overRest_default", "constant", "value", "constant_default", "baseSetToString", "defineProperty_default", "func", "string", "constant_default", "identity_default", "baseSetToString_default", "HOT_COUNT", "HOT_SPAN", "nativeNow", "shortOut", "func", "count", "lastCalled", "stamp", "remaining", "shortOut_default", "setToString", "shortOut_default", "baseSetToString_default", "setToString_default", "baseRest", "func", "start", "setToString_default", "overRest_default", "identity_default", "baseRest_default", "isIterateeCall", "value", "index", "object", "isObject_default", "type", "isArrayLike_default", "isIndex_default", "eq_default", "isIterateeCall_default", "createAssigner", "assigner", "baseRest_default", "object", "sources", "index", "length", "customizer", "guard", "isIterateeCall_default", "source", "createAssigner_default", "merge", "createAssigner_default", "object", "source", "srcIndex", "baseMerge_default", "merge_default", "nativeKeys", "overArg_default", "nativeKeys_default", "objectProto", "hasOwnProperty", "baseKeys", "object", "isPrototype_default", "nativeKeys_default", "result", "key", "baseKeys_default", "DataView", "getNative_default", "root_default", "DataView_default", "Promise", "getNative_default", "root_default", "Promise_default", "Set", "getNative_default", "root_default", "Set_default", "WeakMap", "getNative_default", "root_default", "WeakMap_default", "mapTag", "objectTag", "promiseTag", "setTag", "weakMapTag", "dataViewTag", "dataViewCtorString", "toSource_default", "DataView_default", "mapCtorString", "Map_default", "promiseCtorString", "Promise_default", "setCtorString", "Set_default", "weakMapCtorString", "WeakMap_default", "getTag", "baseGetTag_default", "value", "result", "Ctor", "ctorString", "getTag_default", "mapTag", "setTag", "objectProto", "hasOwnProperty", "isEmpty", "value", "isArrayLike_default", "isArray_default", "isBuffer_default", "isTypedArray_default", "isArguments_default", "tag", "getTag_default", "isPrototype_default", "baseKeys_default", "key", "isEmpty_default", "import_dayjs", "import_sanitize_url", "import_dompurify", "COMMENT", "RULESET", "DECLARATION", "IMPORT", "KEYFRAMES", "abs", "from", "trim", "value", "replace", "value", "pattern", "replacement", "indexof", "search", "charat", "index", "substr", "begin", "end", "strlen", "sizeof", "append", "array", "line", "column", "length", "position", "character", "characters", "node", "value", "root", "parent", "type", "props", "children", "char", "character", "prev", "position", "charat", "characters", "column", "line", "next", "length", "peek", "caret", "slice", "begin", "end", "substr", "token", "type", "alloc", "value", "strlen", "dealloc", "delimit", "trim", "delimiter", "whitespace", "type", "character", "peek", "next", "token", "escaping", "index", "count", "next", "character", "slice", "caret", "peek", "delimiter", "type", "position", "commenter", "from", "identifier", "token", "compile", "value", "dealloc", "parse", "alloc", "root", "parent", "rule", "rules", "rulesets", "pseudo", "points", "declarations", "index", "offset", "length", "atrule", "property", "previous", "variable", "scanning", "ampersand", "character", "type", "props", "children", "reference", "characters", "next", "charat", "indexof", "replace", "delimit", "whitespace", "escaping", "caret", "peek", "append", "comment", "commenter", "strlen", "declaration", "ruleset", "prev", "from", "identifier", "post", "size", "sizeof", "i", "j", "k", "x", "y", "substr", "abs", "z", "trim", "node", "RULESET", "COMMENT", "char", "DECLARATION", "serialize", "children", "callback", "output", "length", "sizeof", "i", "stringify", "element", "index", "IMPORT", "DECLARATION", "COMMENT", "KEYFRAMES", "RULESET", "strlen", "LEVELS", "log$1", "_args", "setLogLevel$1", "level", "numericLevel", "format", "dayjs", "lineBreakRegex", "getRows", "s", "breakToPlaceholder", "removeScript", "txt", "DOMPurify", "sanitizeMore", "text", "config2", "_a", "placeholderToBreak", "sanitizeText$2", "sanitizeTextOrArray", "a", "x", "hasBreaks", "splitBreaks", "getUrl", "useAbsolute", "url", "evaluate", "val", "getMax", "values", "newValues", "value", "getMin", "parseGenericTypes", "input", "inputSets", "output", "thisSet", "previousSet", "nextSet", "shouldCombineSets", "processSet", "countOccurrence", "string", "substring", "prevCount", "nextCount", "tildeCount", "hasStartingTilde", "chars", "first", "last", "common$1", "mkBorder", "col", "darkMode", "adjust_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "Theme$4", "invert_default", "darken_default", "lighten_default", "i", "multiplier", "is_dark_default", "overrides", "keys", "k", "getThemeVariables$4", "userOverrides", "theme2", "Theme$3", "rgba_default", "getThemeVariables$3", "Theme$2", "getThemeVariables$2", "Theme$1", "getThemeVariables$1", "Theme5", "getThemeVariables", "theme", "defaultConfigJson", "config", "keyify", "obj", "prefix", "res", "el", "configKeys", "defaultConfig$1", "sanitizeDirective", "args", "arg", "key", "cssMatchers", "cssKey", "sanitizeCss", "str2", "startCnt", "endCnt", "element", "frontMatterRegex", "directiveRegex", "anyCommentRegex", "UnknownDiagramError", "message", "detectors", "detectType", "detector2", "registerLazyLoadedDiagrams", "diagrams2", "id2", "loader2", "addDetector", "getDiagramLoader", "assignWithDepth", "dst", "src", "depth", "clobber", "assignWithDepth$1", "ZERO_WIDTH_SPACE", "d3CurveTypes", "basis_default", "basisClosed_default", "basisOpen_default", "bumpX", "bumpY", "bundle_default", "cardinalClosed_default", "cardinalOpen_default", "cardinal_default", "catmullRomClosed_default", "catmullRomOpen_default", "catmullRom_default", "linear_default", "linearClosed_default", "monotoneX", "monotoneY", "natural_default", "step_default", "stepAfter", "stepBefore", "directiveWithoutOpen", "detectInit", "inits", "detectDirective", "results", "init2", "type2", "prop", "commentWithoutDirectives", "match", "result", "type22", "error", "removeDirectives", "isSubstringInArray", "arr", "interpolateToCurve", "interpolate", "defaultCurve", "curveName", "formatUrl", "linkStr", "runFunc", "functionName", "params", "arrPaths", "len", "fnName", "distance", "p1", "p2", "traverseEdge", "points", "prevPoint", "totalDistance", "point", "remainingDistance", "calculatePoint", "calcLabelPosition", "roundNumber", "num", "precision", "factor", "distanceToTraverse", "vectorDistance", "distanceRatio", "calcCardinalityPosition", "isRelationTypePresent", "initialPosition", "center", "d", "angle", "cardinalityPosition", "calcTerminalLabelPosition", "terminalMarkerSize", "position", "_points", "distanceToCardinalityPoint", "getStylesFromArray", "style", "labelStyle", "cnt", "generateId", "makeRandomHex", "length", "characters", "charactersLength", "random", "options", "getTextObj", "drawSimpleText", "elem", "textData", "nText", "_fontSizePx", "parseFontSize", "textElem", "span", "wrapLabel", "memoize_default", "label", "maxWidth", "words", "completedLines", "nextLine", "word", "index", "wordLength", "calculateTextWidth", "nextLineLength", "hyphenatedStrings", "remainingWord", "breakString", "line", "hyphenCharacter", "lines", "currentLine", "character", "currentCharacter", "isLastLine", "hyphenatedNextLine", "calculateTextHeight", "calculateTextDimensions", "fontSize", "fontFamily", "fontWeight", "fontFamilies", "dims", "body", "select_default", "g", "fontFamily2", "cHeight", "dim", "textObj", "bBox", "InitIDGenerator", "deterministic", "seed", "decoder", "entityDecode", "html", "isDetailedError", "insertTitle", "parent", "cssClass", "titleTopMargin", "title", "bounds", "fontSizeNumber", "cleanAndMerge", "defaultData", "data", "merge_default", "utils", "version", "defaultConfig", "siteConfig", "configFromInitialize", "directives", "currentConfig", "updateCurrentConfig", "siteCfg", "_directives", "cfg", "sumOfDirectives", "sanitize", "tmpConfigFromInitialize", "themeVariables", "checkConfig", "setSiteConfig", "conf", "saveConfigFromInitialize", "updateSiteConfig", "getSiteConfig", "setConfig", "getConfig$1", "addDirective", "directive", "reset", "ConfigWarning", "issuedWarnings", "issueWarning", "warning", "id$j", "detector$j", "loader$k", "diagram2", "plugin$h", "c4", "id$i", "detector$i", "_b", "loader$j", "plugin$g", "flowchart", "id$h", "detector$h", "_c", "loader$i", "plugin$f", "flowchartV2", "id$g", "detector$g", "loader$h", "plugin$e", "er", "id$f", "detector$f", "loader$g", "plugin$d", "git", "id$e", "detector$e", "loader$f", "plugin$c", "gantt", "id$d", "detector$d", "loader$e", "info", "id$c", "detector$c", "loader$d", "pie", "id$b", "detector$b", "loader$c", "plugin$b", "quadrantChart", "id$a", "detector$a", "loader$b", "plugin$a", "requirement", "id$9", "detector$9", "loader$a", "plugin$9", "sequence", "id$8", "detector$8", "loader$9", "plugin$8", "classDiagram", "id$7", "detector$7", "loader$8", "plugin$7", "classDiagramV2", "id$6", "detector$6", "loader$7", "plugin$6", "state", "id$5", "detector$5", "loader$6", "plugin$5", "stateV2", "id$4", "detector$4", "loader$5", "plugin$4", "journey", "selectSvgElement", "securityLevel", "root", "doc", "d3Attrs", "d3Elem", "attrs", "attr", "calculateSvgSizeAttrs", "height", "width", "useMaxWidth", "configureSvgSize", "svgElem", "setupGraphViewbox$1", "graph", "padding", "svgBounds", "sWidth", "sHeight", "vBox", "draw", "_text", "version2", "svg", "renderer", "errorRenderer", "diagram", "errorDiagram", "id$3", "detector$3", "loader$4", "plugin$3", "flowchartElk", "id$2", "detector$2", "loader$3", "plugin$2", "timeline", "id$1", "detector$1", "loader$2", "plugin$1", "mindmap", "id", "detector", "loader$1", "plugin", "sankey", "themes", "getStyles", "userStyles", "diagramStyles", "addStylesForDiagram", "diagramTheme", "getStyles$1", "accTitle", "diagramTitle", "accDescription", "sanitizeText$1", "clear", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "setDiagramTitle", "getDiagramTitle", "commonDb", "log", "setLogLevel", "getConfig", "sanitizeText", "setupGraphViewbox", "getCommonDb", "diagrams", "registerDiagram", "getDiagram", "name", "DiagramNotFoundError", "hasLoadedDiagrams", "addDiagrams", "Diagram", "metadata", "cnf", "e", "_d", "_e", "getDiagramFromText", "interactionFunctions", "addFunction", "func", "attachFunctions", "f", "SVG_ROLE", "setA11yDiagramInfo", "diagramType", "addSVGa11yTitleDescription", "a11yTitle", "a11yDesc", "baseId", "descId", "titleId", "cleanupComments", "isNothing", "subject", "isObject", "toArray", "sequence2", "extend", "target", "source", "sourceKeys", "repeat", "count", "cycle", "isNegativeZero", "number", "isNothing_1", "isObject_1", "toArray_1", "repeat_1", "isNegativeZero_1", "extend_1", "common", "formatError", "exception2", "compact", "where", "YAMLException$1", "reason", "mark", "exception", "getLine", "buffer", "lineStart", "lineEnd", "maxLineLength", "head", "tail", "maxHalfLength", "padStart", "max", "makeSnippet", "re", "lineStarts", "lineEnds", "foundLineNo", "lineNoLength", "snippet", "TYPE_CONSTRUCTOR_OPTIONS", "YAML_NODE_KINDS", "compileStyleAliases", "map2", "alias", "Type$1", "tag", "type", "compileList", "schema2", "currentType", "newIndex", "previousType", "previousIndex", "compileMap", "collectType", "Schema$1", "definition", "implicit", "explicit", "type$1", "schema", "str", "seq", "map", "failsafe", "resolveYamlNull", "constructYamlNull", "isNull", "object", "_null", "resolveYamlBoolean", "constructYamlBoolean", "isBoolean", "bool", "isHexCode", "c", "isOctCode", "isDecCode", "resolveYamlInteger", "hasDigits", "ch", "constructYamlInteger", "sign", "isInteger", "int", "YAML_FLOAT_PATTERN", "resolveYamlFloat", "constructYamlFloat", "SCIENTIFIC_WITHOUT_DOT", "representYamlFloat", "isFloat", "float", "json", "core", "YAML_DATE_REGEXP", "YAML_TIMESTAMP_REGEXP", "resolveYamlTimestamp", "constructYamlTimestamp", "year", "month", "day", "hour", "minute", "second", "fraction", "delta", "tz_hour", "tz_minute", "date", "representYamlTimestamp", "timestamp", "resolveYamlMerge", "merge", "BASE64_MAP", "resolveYamlBinary", "code", "idx", "bitlen", "constructYamlBinary", "tailbits", "bits", "representYamlBinary", "isBinary", "binary", "_hasOwnProperty$3", "_toString$2", "resolveYamlOmap", "objectKeys", "pair", "pairKey", "pairHasKey", "constructYamlOmap", "omap", "_toString$1", "resolveYamlPairs", "constructYamlPairs", "pairs", "_hasOwnProperty$2", "resolveYamlSet", "constructYamlSet", "set", "_default", "_hasOwnProperty$1", "CONTEXT_FLOW_IN", "CONTEXT_FLOW_OUT", "CONTEXT_BLOCK_IN", "CONTEXT_BLOCK_OUT", "CHOMPING_CLIP", "CHOMPING_STRIP", "CHOMPING_KEEP", "PATTERN_NON_PRINTABLE", "PATTERN_NON_ASCII_LINE_BREAKS", "PATTERN_FLOW_INDICATORS", "PATTERN_TAG_HANDLE", "PATTERN_TAG_URI", "_class", "is_EOL", "is_WHITE_SPACE", "is_WS_OR_EOL", "is_FLOW_INDICATOR", "fromHexCode", "lc", "escapedHexLen", "fromDecimalCode", "simpleEscapeSequence", "charFromCodepoint", "simpleEscapeCheck", "simpleEscapeMap", "State$1", "generateError", "state2", "throwError", "throwWarning", "directiveHandlers", "major", "minor", "handle", "captureSegment", "start", "end", "checkJson", "_position", "_length", "_character", "_result", "mergeMappings", "destination", "overridableKeys", "quantity", "storeMappingPair", "keyTag", "keyNode", "valueNode", "startLine", "startLineStart", "startPos", "readLineBreak", "skipSeparationSpace", "allowComments", "checkIndent", "lineBreaks", "testDocumentSeparator", "writeFoldedLines", "readPlainScalar", "nodeIndent", "withinFlowCollection", "preceding", "following", "captureStart", "captureEnd", "hasPendingContent", "_line", "_lineStart", "_lineIndent", "_kind", "readSingleQuotedScalar", "readDoubleQuotedScalar", "hexLength", "hexResult", "tmp", "readFlowCollection", "readNext", "_pos", "_tag", "_anchor", "terminator", "isPair", "isExplicitPair", "isMapping", "composeNode", "readBlockScalar", "folding", "chomping", "didReadContent", "detectedIndent", "textIndent", "emptyLines", "atMoreIndented", "readBlockSequence", "detected", "readBlockMapping", "flowIndent", "allowCompact", "_keyLine", "_keyLineStart", "_keyPos", "atExplicitKey", "readTagProperty", "isVerbatim", "isNamed", "tagHandle", "tagName", "readAnchorProperty", "readAlias", "parentIndent", "nodeContext", "allowToSeek", "allowBlockStyles", "allowBlockScalars", "allowBlockCollections", "indentStatus", "atNewLine", "hasContent", "typeIndex", "typeQuantity", "typeList", "blockIndent", "readDocument", "documentStart", "directiveName", "directiveArgs", "hasDirectives", "loadDocuments", "nullpos", "loadAll$1", "iterator", "documents", "load$1", "loadAll_1", "load_1", "loader", "JSON_SCHEMA", "load", "extractFrontMatter", "matches", "parsed", "cleanupText", "attributes", "processFrontmatter", "displayMode", "processDirectives", "initDirective", "wrapDirectives", "preprocessDiagram", "cleanedCode", "frontMatterResult", "directiveResult", "MAX_TEXTLENGTH", "MAX_TEXTLENGTH_EXCEEDED_MSG", "SECURITY_LVL_SANDBOX", "SECURITY_LVL_LOOSE", "XMLNS_SVG_STD", "XMLNS_XLINK_STD", "XMLNS_XHTML_STD", "IFRAME_WIDTH", "IFRAME_HEIGHT", "IFRAME_STYLES", "IFRAME_BODY_STYLE", "IFRAME_SANDBOX_OPTS", "IFRAME_NOT_SUPPORTED_MSG", "DOMPURIFY_TAGS", "DOMPURIFY_ATTR", "processAndSetConfigs", "processed", "parse$1", "parseOptions", "encodeEntities", "innerTxt", "decodeEntities", "cssImportantStyles", "cssClasses", "createCssStyles", "classDefs", "cssStyles", "isEmpty_default", "cssElements", "classId", "styleClassDef", "cssElement", "createUserStyles", "graphType", "svgId", "userCSSstyles", "allStyles", "serialize", "compile", "stringify", "cleanUpSvgCode", "svgCode", "inSandboxMode", "useArrowMarkerUrls", "cleanedUpSvg", "putIntoIFrame", "svgElement", "base64encodedSrc", "appendDivSvgG", "parentRoot", "enclosingDivId", "divStyle", "svgXlink", "enclosingDiv", "svgNode", "sandboxedIframe", "parentNode", "iFrameId", "removeExistingElements", "divId", "render$1", "svgContainingElement", "_f", "idSelector", "iFrameID", "iFrameID_selector", "enclosingDivID", "enclosingDivID_selector", "isSandboxed", "isLooseSecurityLevel", "iframe", "diag", "parseEncounteredException", "firstChild", "diagramClassDefs", "rules", "style1", "a11yDescr", "addA11yInfo", "svgEl", "node", "initialize$1", "mermaidAPI", "loadRegisteredDiagrams", "failed", "err", "handleError", "errors", "parseError", "run", "runThrowsErrors", "mermaid", "postRenderCallback", "querySelector", "nodes", "nodesToProcess", "idGenerator", "dedent", "bindFunctions", "render", "initialize", "init", "callback", "runOptions", "registerExternalDiagrams", "lazyLoad", "contentLoaded", "startOnLoad", "setParseErrorHandler", "parseErrorHandler", "executionQueue", "executionQueueRunning", "executeQueue", "parse", "resolve", "reject", "performCall", "rej", "r", "container"] +} diff --git a/public/chunk-FFBLGSWC.min.js b/public/chunk-FFBLGSWC.min.js new file mode 100644 index 0000000..7a2c254 --- /dev/null +++ b/public/chunk-FFBLGSWC.min.js @@ -0,0 +1,2 @@ +import{a as _,b as O,d as k,e as y,f as F,g as G,h as U,i as T,k as A,l as $,m as H,n as M}from"./chunk-YPWPK43L.min.js";import{a as R}from"./chunk-VKCMXAYQ.min.js";import{a as L,d as D,f as x,j as J,k as P}from"./chunk-LLUSN4ZV.min.js";import{$a as N,Fa as n,Ia as E,h as B}from"./chunk-DJFTDYIK.min.js";function m(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:Y(e),edges:Z(e)};return x(e.graph())||(t.value=L(e.graph())),t}function Y(e){return D(e.nodes(),function(t){var i=e.node(t),r=e.parent(t),s={v:t};return x(i)||(s.value=i),x(r)||(s.parent=r),s})}function Z(e){return D(e.edges(),function(t){var i=e.edge(t),r={v:t.v,w:t.w};return x(t.name)||(r.name=t.name),x(i)||(r.value=i),r})}var f={},g={},V={},tt=()=>{g={},V={},f={}},S=(e,t)=>(n.trace("In isDecendant",t," ",e," = ",g[t].includes(e)),!!g[t].includes(e)),et=(e,t)=>(n.info("Decendants of ",t," is ",g[t]),n.info("Edge is ",e),e.v===t||e.w===t?!1:g[t]?g[t].includes(e.v)||S(e.v,t)||S(e.w,t)||g[t].includes(e.w):(n.debug("Tilt, ",t,",not in decendants"),!1)),j=(e,t,i,r)=>{n.warn("Copying children of ",e,"root",r,"data",t.node(e),r);let s=t.children(e)||[];e!==r&&s.push(e),n.warn("Copying (nodes) clusterId",e,"nodes",s),s.forEach(c=>{if(t.children(c).length>0)j(c,t,i,r);else{let d=t.node(c);n.info("cp ",c," to ",r," with parent ",e),i.setNode(c,d),r!==t.parent(c)&&(n.warn("Setting parent",c,t.parent(c)),i.setParent(c,t.parent(c))),e!==r&&c!==e?(n.debug("Setting parent",c,e),i.setParent(c,e)):(n.info("In copy ",e,"root",r,"data",t.node(e),r),n.debug("Not Setting parent for node=",c,"cluster!==rootId",e!==r,"node!==clusterId",c!==e));let l=t.edges(c);n.debug("Copying Edges",l),l.forEach(h=>{n.info("Edge",h);let u=t.edge(h.v,h.w,h.name);n.info("Edge data",u,r);try{et(h,r)?(n.info("Copying as ",h.v,h.w,u,h.name),i.setEdge(h.v,h.w,u,h.name),n.info("newGraph edges ",i.edges(),i.edge(i.edges()[0]))):n.info("Skipping copy of edge ",h.v,"-->",h.w," rootId: ",r," clusterId:",e)}catch(w){n.error(w)}})}n.debug("Removing node",c),t.removeNode(c)})},W=(e,t)=>{let i=t.children(e),r=[...i];for(let s of i)V[s]=e,r=[...r,...W(s,t)];return r},p=(e,t)=>{n.trace("Searching",e);let i=t.children(e);if(n.trace("Searching children of id ",e,i),i.length<1)return n.trace("This is a valid node",e),e;for(let r of i){let s=p(r,t);if(s)return n.trace("Found replacement for",e," => ",s),s}},X=e=>!f[e]||!f[e].externalConnections?e:f[e]?f[e].id:e,it=(e,t)=>{if(!e||t>10){n.debug("Opting out, no graph ");return}else n.debug("Opting in, graph ");e.nodes().forEach(function(i){e.children(i).length>0&&(n.warn("Cluster identified",i," Replacement id in edges: ",p(i,e)),g[i]=W(i,e),f[i]={id:p(i,e),clusterData:e.node(i)})}),e.nodes().forEach(function(i){let r=e.children(i),s=e.edges();r.length>0?(n.debug("Cluster identified",i,g),s.forEach(c=>{if(c.v!==i&&c.w!==i){let d=S(c.v,i),l=S(c.w,i);d^l&&(n.warn("Edge: ",c," leaves cluster ",i),n.warn("Decendants of XXX ",i,": ",g[i]),f[i].externalConnections=!0)}})):n.debug("Not a cluster ",i,g)}),e.edges().forEach(function(i){let r=e.edge(i);n.warn("Edge "+i.v+" -> "+i.w+": "+JSON.stringify(i)),n.warn("Edge "+i.v+" -> "+i.w+": "+JSON.stringify(e.edge(i)));let s=i.v,c=i.w;if(n.warn("Fix XXX",f,"ids:",i.v,i.w,"Translating: ",f[i.v]," --- ",f[i.w]),f[i.v]&&f[i.w]&&f[i.v]===f[i.w]){n.warn("Fixing and trixing link to self - removing XXX",i.v,i.w,i.name),n.warn("Fixing and trixing - removing XXX",i.v,i.w,i.name),s=X(i.v),c=X(i.w),e.removeEdge(i.v,i.w,i.name);let d=i.w+"---"+i.v;e.setNode(d,{domId:d,id:d,labelStyle:"",labelText:r.label,padding:0,shape:"labelRect",style:""});let l=structuredClone(r),h=structuredClone(r);l.label="",l.arrowTypeEnd="none",h.label="",l.fromCluster=i.v,h.toCluster=i.v,e.setEdge(s,d,l,i.name+"-cyclic-special"),e.setEdge(d,c,h,i.name+"-cyclic-special")}else(f[i.v]||f[i.w])&&(n.warn("Fixing and trixing - removing XXX",i.v,i.w,i.name),s=X(i.v),c=X(i.w),e.removeEdge(i.v,i.w,i.name),s!==i.v&&(r.fromCluster=i.v),c!==i.w&&(r.toCluster=i.w),n.warn("Fix Replacing with XXX",s,c,i.name),e.setEdge(s,c,r,i.name))}),n.warn("Adjusted Graph",m(e)),q(e,0),n.trace(f)},q=(e,t)=>{if(n.warn("extractor - ",t,m(e),e.children("D")),t>10){n.error("Bailing out");return}let i=e.nodes(),r=!1;for(let s of i){let c=e.children(s);r=r||c.length>0}if(!r){n.debug("Done, no node has children",e.nodes());return}n.debug("Nodes = ",i,t);for(let s of i)if(n.debug("Extracting node",s,f,f[s]&&!f[s].externalConnections,!e.parent(s),e.node(s),e.children("D")," Depth ",t),!f[s])n.debug("Not a cluster",s,t);else if(!f[s].externalConnections&&e.children(s)&&e.children(s).length>0){n.warn("Cluster without external connections, without a parent and with children",s,t);let d=e.graph().rankdir==="TB"?"LR":"TB";f[s]&&f[s].clusterData&&f[s].clusterData.dir&&(d=f[s].clusterData.dir,n.warn("Fixing dir",f[s].clusterData.dir,d));let l=new J({multigraph:!0,compound:!0}).setGraph({rankdir:d,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});n.warn("Old graph before copy",m(e)),j(s,e,l,s),e.setNode(s,{clusterNode:!0,id:s,clusterData:f[s].clusterData,labelText:f[s].labelText,graph:l}),n.warn("New graph after copy node: (",s,")",m(l)),n.debug("Old graph after copy",m(e))}else n.warn("Cluster ** ",s," **not meeting the criteria !externalConnections:",!f[s].externalConnections," no parent: ",!e.parent(s)," children ",e.children(s)&&e.children(s).length>0,e.children("D"),t),n.debug(f);i=e.nodes(),n.warn("New list of nodes",i);for(let s of i){let c=e.node(s);n.warn(" Now next level",s,c),c.clusterNode&&q(c.graph,t+1)}},z=(e,t)=>{if(t.length===0)return[];let i=Object.assign(t);return t.forEach(r=>{let s=e.children(r),c=z(e,s);i=[...i,...c]}),i},nt=e=>z(e,e.children()),st=(e,t)=>{n.info("Creating subgraph rect for ",t.id,t);let i=e.insert("g").attr("class","cluster"+(t.class?" "+t.class:"")).attr("id",t.id),r=i.insert("rect",":first-child"),s=E(N().flowchart.htmlLabels),c=i.insert("g").attr("class","cluster-label"),d=t.labelType==="markdown"?R(c,t.labelText,{style:t.labelStyle,useHtmlLabels:s}):c.node().appendChild(O(t.labelText,t.labelStyle,void 0,!0)),l=d.getBBox();if(E(N().flowchart.htmlLabels)){let a=d.children[0],o=B(d);l=a.getBoundingClientRect(),o.attr("width",l.width),o.attr("height",l.height)}let h=0*t.padding,u=h/2,w=t.width<=l.width+h?l.width+h:t.width;t.width<=l.width+h?t.diff=(l.width-t.width)/2-t.padding/2:t.diff=-t.padding/2,n.trace("Data ",t,JSON.stringify(t)),r.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-w/2).attr("y",t.y-t.height/2-u).attr("width",w).attr("height",t.height+h),s?c.attr("transform","translate("+(t.x-l.width/2)+", "+(t.y-t.height/2)+")"):c.attr("transform","translate("+t.x+", "+(t.y-t.height/2)+")");let v=r.node().getBBox();return t.width=v.width,t.height=v.height,t.intersect=function(a){return y(t,a)},i},rt=(e,t)=>{let i=e.insert("g").attr("class","note-cluster").attr("id",t.id),r=i.insert("rect",":first-child"),s=0*t.padding,c=s/2;r.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-c).attr("y",t.y-t.height/2-c).attr("width",t.width+s).attr("height",t.height+s).attr("fill","none");let d=r.node().getBBox();return t.width=d.width,t.height=d.height,t.intersect=function(l){return y(t,l)},i},at=(e,t)=>{let i=e.insert("g").attr("class",t.classes).attr("id",t.id),r=i.insert("rect",":first-child"),s=i.insert("g").attr("class","cluster-label"),c=i.append("rect"),d=s.node().appendChild(O(t.labelText,t.labelStyle,void 0,!0)),l=d.getBBox();if(E(N().flowchart.htmlLabels)){let a=d.children[0],o=B(d);l=a.getBoundingClientRect(),o.attr("width",l.width),o.attr("height",l.height)}l=d.getBBox();let h=0*t.padding,u=h/2,w=t.width<=l.width+t.padding?l.width+t.padding:t.width;t.width<=l.width+t.padding?t.diff=(l.width+t.padding*0-t.width)/2:t.diff=-t.padding/2,r.attr("class","outer").attr("x",t.x-w/2-u).attr("y",t.y-t.height/2-u).attr("width",w+h).attr("height",t.height+h),c.attr("class","inner").attr("x",t.x-w/2-u).attr("y",t.y-t.height/2-u+l.height-1).attr("width",w+h).attr("height",t.height+h-l.height-3),s.attr("transform","translate("+(t.x-l.width/2)+", "+(t.y-t.height/2-t.padding/3+(E(N().flowchart.htmlLabels)?5:3))+")");let v=r.node().getBBox();return t.height=v.height,t.intersect=function(a){return y(t,a)},i},ct=(e,t)=>{let i=e.insert("g").attr("class",t.classes).attr("id",t.id),r=i.insert("rect",":first-child"),s=0*t.padding,c=s/2;r.attr("class","divider").attr("x",t.x-t.width/2-c).attr("y",t.y-t.height/2).attr("width",t.width+s).attr("height",t.height+s);let d=r.node().getBBox();return t.width=d.width,t.height=d.height,t.diff=-t.padding/2,t.intersect=function(l){return y(t,l)},i},ot={rect:st,roundedWithTitle:at,noteGroup:rt,divider:ct},K={},lt=(e,t)=>{n.trace("Inserting cluster");let i=t.shape||"rect";K[t.id]=ot[i](e,t)},ft=()=>{K={}},Q=async(e,t,i,r,s)=>{n.info("Graph in recursive render: XXX",m(t),s);let c=t.graph().rankdir;n.trace("Dir in recursive render - dir:",c);let d=e.insert("g").attr("class","root");t.nodes()?n.info("Recursive render XXX",t.nodes()):n.info("No nodes found for",t),t.edges().length>0&&n.trace("Recursive edges",t.edge(t.edges()[0]));let l=d.insert("g").attr("class","clusters"),h=d.insert("g").attr("class","edgePaths"),u=d.insert("g").attr("class","edgeLabels"),w=d.insert("g").attr("class","nodes");await Promise.all(t.nodes().map(async function(a){let o=t.node(a);if(s!==void 0){let b=JSON.parse(JSON.stringify(s.clusterData));n.info("Setting data for cluster XXX (",a,") ",b,s),t.setNode(s.id,b),t.parent(a)||(n.trace("Setting parent",a,s.id),t.setParent(a,s.id,b))}if(n.info("(Insert) Node XXX"+a+": "+JSON.stringify(t.node(a))),o&&o.clusterNode){n.info("Cluster identified",a,o.width,t.node(a));let b=await Q(w,o.graph,i,r,t.node(a)),C=b.elem;k(o,C),o.diff=b.diff||0,n.info("Node bounds (abc123)",a,o,o.width,o.x,o.y),G(C,o),n.warn("Recursive render complete ",C,o)}else t.children(a).length>0?(n.info("Cluster - the non recursive path XXX",a,o.id,o,t),n.info(p(o.id,t)),f[o.id]={id:p(o.id,t),node:o}):(n.info("Node - the non recursive path",a,o.id,o),await F(w,t.node(a),c))})),t.edges().forEach(function(a){let o=t.edge(a.v,a.w,a.name);n.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(a)),n.info("Edge "+a.v+" -> "+a.w+": ",a," ",JSON.stringify(t.edge(a))),n.info("Fix",f,"ids:",a.v,a.w,"Translateing: ",f[a.v],f[a.w]),$(u,o)}),t.edges().forEach(function(a){n.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(a))}),n.info("#############################################"),n.info("### Layout ###"),n.info("#############################################"),n.info(t),P(t),n.info("Graph after layout:",m(t));let v=0;return nt(t).forEach(function(a){let o=t.node(a);n.info("Position "+a+": "+JSON.stringify(t.node(a))),n.info("Position "+a+": ("+o.x,","+o.y,") width: ",o.width," height: ",o.height),o&&o.clusterNode?T(o):t.children(a).length>0?(lt(l,o),f[o.id].node=o):T(o)}),t.edges().forEach(function(a){let o=t.edge(a);n.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(o),o);let b=M(h,a,o,f,i,t,r);H(o,b)}),t.nodes().forEach(function(a){let o=t.node(a);n.info(a,o.type,o.diff),o.type==="group"&&(v=o.diff)}),{elem:d,diff:v}},yt=async(e,t,i,r,s)=>{_(e,i,r,s),U(),A(),ft(),tt(),n.warn("Graph at first:",JSON.stringify(m(t))),it(t),n.warn("Graph after:",JSON.stringify(m(t))),await Q(e,t,r,s)};export{yt as a}; +//# sourceMappingURL=chunk-FFBLGSWC.min.js.map diff --git a/public/chunk-FFBLGSWC.min.js.map b/public/chunk-FFBLGSWC.min.js.map new file mode 100644 index 0000000..1331ebb --- /dev/null +++ b/public/chunk-FFBLGSWC.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/dagre-d3-es/src/graphlib/json.js", "../../node_modules/mermaid/dist/index-b0b3af87.js"], + "sourcesContent": ["import * as _ from 'lodash-es';\nimport { Graph } from './graph.js';\n\nexport { write, read };\n\nfunction write(g) {\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound(),\n },\n nodes: writeNodes(g),\n edges: writeEdges(g),\n };\n if (!_.isUndefined(g.graph())) {\n json.value = _.clone(g.graph());\n }\n return json;\n}\n\nfunction writeNodes(g) {\n return _.map(g.nodes(), function (v) {\n var nodeValue = g.node(v);\n var parent = g.parent(v);\n var node = { v: v };\n if (!_.isUndefined(nodeValue)) {\n node.value = nodeValue;\n }\n if (!_.isUndefined(parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\nfunction writeEdges(g) {\n return _.map(g.edges(), function (e) {\n var edgeValue = g.edge(e);\n var edge = { v: e.v, w: e.w };\n if (!_.isUndefined(e.name)) {\n edge.name = e.name;\n }\n if (!_.isUndefined(edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\nfunction read(json) {\n var g = new Graph(json.options).setGraph(json.value);\n _.each(json.nodes, function (entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n _.each(json.edges, function (entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n", "import { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlibJson from \"dagre-d3-es/src/graphlib/json.js\";\nimport { c as createLabel, i as intersectRect, a as insertMarkers, b as clear$2, d as clear$3, u as updateNodeBounds, s as setNodeElem, e as insertNode, f as insertEdgeLabel, p as positionNode, g as insertEdge, h as positionEdgeLabel } from \"./edges-bc33a094.js\";\nimport { l as log, m as evaluate, c as getConfig } from \"./mermaid-485fd1a4.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { c as createText } from \"./createText-b3507a77.js\";\nimport { select } from \"d3\";\nlet clusterDb = {};\nlet descendants = {};\nlet parents = {};\nconst clear$1 = () => {\n descendants = {};\n parents = {};\n clusterDb = {};\n};\nconst isDescendant = (id, ancenstorId) => {\n log.trace(\"In isDecendant\", ancenstorId, \" \", id, \" = \", descendants[ancenstorId].includes(id));\n if (descendants[ancenstorId].includes(id)) {\n return true;\n }\n return false;\n};\nconst edgeInCluster = (edge, clusterId) => {\n log.info(\"Decendants of \", clusterId, \" is \", descendants[clusterId]);\n log.info(\"Edge is \", edge);\n if (edge.v === clusterId) {\n return false;\n }\n if (edge.w === clusterId) {\n return false;\n }\n if (!descendants[clusterId]) {\n log.debug(\"Tilt, \", clusterId, \",not in decendants\");\n return false;\n }\n return descendants[clusterId].includes(edge.v) || isDescendant(edge.v, clusterId) || isDescendant(edge.w, clusterId) || descendants[clusterId].includes(edge.w);\n};\nconst copy = (clusterId, graph, newGraph, rootId) => {\n log.warn(\n \"Copying children of \",\n clusterId,\n \"root\",\n rootId,\n \"data\",\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n log.warn(\"Copying (nodes) clusterId\", clusterId, \"nodes\", nodes);\n nodes.forEach((node) => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n log.info(\"cp \", node, \" to \", rootId, \" with parent \", clusterId);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n log.warn(\"Setting parent\", node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n if (clusterId !== rootId && node !== clusterId) {\n log.debug(\"Setting parent\", node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n log.info(\"In copy \", clusterId, \"root\", rootId, \"data\", graph.node(clusterId), rootId);\n log.debug(\n \"Not Setting parent for node=\",\n node,\n \"cluster!==rootId\",\n clusterId !== rootId,\n \"node!==clusterId\",\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n log.debug(\"Copying Edges\", edges);\n edges.forEach((edge) => {\n log.info(\"Edge\", edge);\n const data2 = graph.edge(edge.v, edge.w, edge.name);\n log.info(\"Edge data\", data2, rootId);\n try {\n if (edgeInCluster(edge, rootId)) {\n log.info(\"Copying as \", edge.v, edge.w, data2, edge.name);\n newGraph.setEdge(edge.v, edge.w, data2, edge.name);\n log.info(\"newGraph edges \", newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n log.info(\n \"Skipping copy of edge \",\n edge.v,\n \"-->\",\n edge.w,\n \" rootId: \",\n rootId,\n \" clusterId:\",\n clusterId\n );\n }\n } catch (e) {\n log.error(e);\n }\n });\n }\n log.debug(\"Removing node\", node);\n graph.removeNode(node);\n });\n};\nconst extractDescendants = (id, graph) => {\n const children = graph.children(id);\n let res = [...children];\n for (const child of children) {\n parents[child] = id;\n res = [...res, ...extractDescendants(child, graph)];\n }\n return res;\n};\nconst findNonClusterChild = (id, graph) => {\n log.trace(\"Searching\", id);\n const children = graph.children(id);\n log.trace(\"Searching children of id \", id, children);\n if (children.length < 1) {\n log.trace(\"This is a valid node\", id);\n return id;\n }\n for (const child of children) {\n const _id = findNonClusterChild(child, graph);\n if (_id) {\n log.trace(\"Found replacement for\", id, \" => \", _id);\n return _id;\n }\n }\n};\nconst getAnchorId = (id) => {\n if (!clusterDb[id]) {\n return id;\n }\n if (!clusterDb[id].externalConnections) {\n return id;\n }\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n return id;\n};\nconst adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n log.debug(\"Opting out, no graph \");\n return;\n } else {\n log.debug(\"Opting in, graph \");\n }\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n if (children.length > 0) {\n log.warn(\n \"Cluster identified\",\n id,\n \" Replacement id in edges: \",\n findNonClusterChild(id, graph)\n );\n descendants[id] = extractDescendants(id, graph);\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\n }\n });\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n log.debug(\"Cluster identified\", id, descendants);\n edges.forEach((edge) => {\n if (edge.v !== id && edge.w !== id) {\n const d1 = isDescendant(edge.v, id);\n const d2 = isDescendant(edge.w, id);\n if (d1 ^ d2) {\n log.warn(\"Edge: \", edge, \" leaves cluster \", id);\n log.warn(\"Decendants of XXX \", id, \": \", descendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n } else {\n log.debug(\"Not a cluster \", id, descendants);\n }\n });\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n log.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n let v = e.v;\n let w = e.w;\n log.warn(\n \"Fix XXX\",\n clusterDb,\n \"ids:\",\n e.v,\n e.w,\n \"Translating: \",\n clusterDb[e.v],\n \" --- \",\n clusterDb[e.w]\n );\n if (clusterDb[e.v] && clusterDb[e.w] && clusterDb[e.v] === clusterDb[e.w]) {\n log.warn(\"Fixing and trixing link to self - removing XXX\", e.v, e.w, e.name);\n log.warn(\"Fixing and trixing - removing XXX\", e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n const specialId = e.w + \"---\" + e.v;\n graph.setNode(specialId, {\n domId: specialId,\n id: specialId,\n labelStyle: \"\",\n labelText: edge.label,\n padding: 0,\n shape: \"labelRect\",\n style: \"\"\n });\n const edge1 = structuredClone(edge);\n const edge2 = structuredClone(edge);\n edge1.label = \"\";\n edge1.arrowTypeEnd = \"none\";\n edge2.label = \"\";\n edge1.fromCluster = e.v;\n edge2.toCluster = e.v;\n graph.setEdge(v, specialId, edge1, e.name + \"-cyclic-special\");\n graph.setEdge(specialId, w, edge2, e.name + \"-cyclic-special\");\n } else if (clusterDb[e.v] || clusterDb[e.w]) {\n log.warn(\"Fixing and trixing - removing XXX\", e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) {\n edge.fromCluster = e.v;\n }\n if (w !== e.w) {\n edge.toCluster = e.w;\n }\n log.warn(\"Fix Replacing with XXX\", v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn(\"Adjusted Graph\", graphlibJson.write(graph));\n extractor(graph, 0);\n log.trace(clusterDb);\n};\nconst extractor = (graph, depth) => {\n log.warn(\"extractor - \", depth, graphlibJson.write(graph), graph.children(\"D\"));\n if (depth > 10) {\n log.error(\"Bailing out\");\n return;\n }\n let nodes = graph.nodes();\n let hasChildren = false;\n for (const node of nodes) {\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n if (!hasChildren) {\n log.debug(\"Done, no node has children\", graph.nodes());\n return;\n }\n log.debug(\"Nodes = \", nodes, depth);\n for (const node of nodes) {\n log.debug(\n \"Extracting node\",\n node,\n clusterDb,\n clusterDb[node] && !clusterDb[node].externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children(\"D\"),\n \" Depth \",\n depth\n );\n if (!clusterDb[node]) {\n log.debug(\"Not a cluster\", node, depth);\n } else if (!clusterDb[node].externalConnections && // !graph.parent(node) &&\n graph.children(node) && graph.children(node).length > 0) {\n log.warn(\n \"Cluster without external connections, without a parent and with children\",\n node,\n depth\n );\n const graphSettings = graph.graph();\n let dir = graphSettings.rankdir === \"TB\" ? \"LR\" : \"TB\";\n if (clusterDb[node] && clusterDb[node].clusterData && clusterDb[node].clusterData.dir) {\n dir = clusterDb[node].clusterData.dir;\n log.warn(\"Fixing dir\", clusterDb[node].clusterData.dir, dir);\n }\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n log.warn(\"Old graph before copy\", graphlibJson.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb[node].clusterData,\n labelText: clusterDb[node].labelText,\n graph: clusterGraph\n });\n log.warn(\"New graph after copy node: (\", node, \")\", graphlibJson.write(clusterGraph));\n log.debug(\"Old graph after copy\", graphlibJson.write(graph));\n } else {\n log.warn(\n \"Cluster ** \",\n node,\n \" **not meeting the criteria !externalConnections:\",\n !clusterDb[node].externalConnections,\n \" no parent: \",\n !graph.parent(node),\n \" children \",\n graph.children(node) && graph.children(node).length > 0,\n graph.children(\"D\"),\n depth\n );\n log.debug(clusterDb);\n }\n }\n nodes = graph.nodes();\n log.warn(\"New list of nodes\", nodes);\n for (const node of nodes) {\n const data = graph.node(node);\n log.warn(\" Now next level\", node, data);\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\nconst sorter = (graph, nodes) => {\n if (nodes.length === 0) {\n return [];\n }\n let result = Object.assign(nodes);\n nodes.forEach((node) => {\n const children = graph.children(node);\n const sorted = sorter(graph, children);\n result = [...result, ...sorted];\n });\n return result;\n};\nconst sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\nconst rect = (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster\" + (node.class ? \" \" + node.class : \"\")).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n const text = node.labelType === \"markdown\" ? createText(label, node.labelText, { style: node.labelStyle, useHtmlLabels }) : label.node().appendChild(createLabel(node.labelText, node.labelStyle, void 0, true));\n let bbox = text.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = node.width <= bbox.width + padding ? bbox.width + padding : node.width;\n if (node.width <= bbox.width + padding) {\n node.diff = (bbox.width - node.width) / 2 - node.padding / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n log.trace(\"Data \", node, JSON.stringify(node));\n rect2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - width / 2).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", width).attr(\"height\", node.height + padding);\n if (useHtmlLabels) {\n label.attr(\n \"transform\",\n // This puts the labal on top of the box instead of inside it\n \"translate(\" + (node.x - bbox.width / 2) + \", \" + (node.y - node.height / 2) + \")\"\n );\n } else {\n label.attr(\n \"transform\",\n // This puts the labal on top of the box instead of inside it\n \"translate(\" + node.x + \", \" + (node.y - node.height / 2) + \")\"\n );\n }\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst noteGroup = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.classes).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n const innerRect = shapeSvg.append(\"rect\");\n const text = label.node().appendChild(createLabel(node.labelText, node.labelStyle, void 0, true));\n let bbox = text.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (bbox.width + node.padding * 0 - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n rect2.attr(\"class\", \"outer\").attr(\"x\", node.x - width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", width + padding).attr(\"height\", node.height + padding);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", node.x - width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding + bbox.height - 1).attr(\"width\", width + padding).attr(\"height\", node.height + padding - bbox.height - 3);\n label.attr(\n \"transform\",\n \"translate(\" + (node.x - bbox.width / 2) + \", \" + (node.y - node.height / 2 - node.padding / 3 + (evaluate(getConfig().flowchart.htmlLabels) ? 5 : 3)) + \")\"\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst divider = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.classes).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"class\", \"divider\").attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding);\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.diff = -node.padding / 2;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\nlet clusterElems = {};\nconst insertCluster = (elem, node) => {\n log.trace(\"Inserting cluster\");\n const shape = node.shape || \"rect\";\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nconst clear = () => {\n clusterElems = {};\n};\nconst recursiveRender = async (_elem, graph, diagramtype, id, parentCluster) => {\n log.info(\"Graph in recursive render: XXX\", graphlibJson.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.trace(\"Dir in recursive render - dir:\", dir);\n const elem = _elem.insert(\"g\").attr(\"class\", \"root\");\n if (!graph.nodes()) {\n log.info(\"No nodes found for\", graph);\n } else {\n log.info(\"Recursive render XXX\", graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.trace(\"Recursive edges\", graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert(\"g\").attr(\"class\", \"clusters\");\n const edgePaths = elem.insert(\"g\").attr(\"class\", \"edgePaths\");\n const edgeLabels = elem.insert(\"g\").attr(\"class\", \"edgeLabels\");\n const nodes = elem.insert(\"g\").attr(\"class\", \"nodes\");\n await Promise.all(\n graph.nodes().map(async function(v) {\n const node = graph.node(v);\n if (parentCluster !== void 0) {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n log.info(\"Setting data for cluster XXX (\", v, \") \", data, parentCluster);\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n log.trace(\"Setting parent\", v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n log.info(\"(Insert) Node XXX\" + v + \": \" + JSON.stringify(graph.node(v)));\n if (node && node.clusterNode) {\n log.info(\"Cluster identified\", v, node.width, graph.node(v));\n const o = await recursiveRender(nodes, node.graph, diagramtype, id, graph.node(v));\n const newEl = o.elem;\n updateNodeBounds(node, newEl);\n node.diff = o.diff || 0;\n log.info(\"Node bounds (abc123)\", v, node, node.width, node.x, node.y);\n setNodeElem(newEl, node);\n log.warn(\"Recursive render complete \", newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n log.info(\"Cluster - the non recursive path XXX\", v, node.id, node, graph);\n log.info(findNonClusterChild(node.id, graph));\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\n } else {\n log.info(\"Node - the non recursive path\", v, node.id, node);\n await insertNode(nodes, graph.node(v), dir);\n }\n }\n })\n );\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e.v, e.w, e.name);\n log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \", e, \" \", JSON.stringify(graph.edge(e)));\n log.info(\"Fix\", clusterDb, \"ids:\", e.v, e.w, \"Translateing: \", clusterDb[e.v], clusterDb[e.w]);\n insertEdgeLabel(edgeLabels, edge);\n });\n graph.edges().forEach(function(e) {\n log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n });\n log.info(\"#############################################\");\n log.info(\"### Layout ###\");\n log.info(\"#############################################\");\n log.info(graph);\n layout(graph);\n log.info(\"Graph after layout:\", graphlibJson.write(graph));\n let diff = 0;\n sortNodesByHierarchy(graph).forEach(function(v) {\n const node = graph.node(v);\n log.info(\"Position \" + v + \": \" + JSON.stringify(graph.node(v)));\n log.info(\n \"Position \" + v + \": (\" + node.x,\n \",\" + node.y,\n \") width: \",\n node.width,\n \" height: \",\n node.height\n );\n if (node && node.clusterNode) {\n positionNode(node);\n } else {\n if (graph.children(v).length > 0) {\n insertCluster(clusters, node);\n clusterDb[node.id].node = node;\n } else {\n positionNode(node);\n }\n }\n });\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(edge), edge);\n const paths = insertEdge(edgePaths, e, edge, clusterDb, diagramtype, graph, id);\n positionEdgeLabel(edge, paths);\n });\n graph.nodes().forEach(function(v) {\n const n = graph.node(v);\n log.info(v, n.type, n.diff);\n if (n.type === \"group\") {\n diff = n.diff;\n }\n });\n return { elem, diff };\n};\nconst render = async (elem, graph, markers, diagramtype, id) => {\n insertMarkers(elem, markers, diagramtype, id);\n clear$2();\n clear$3();\n clear();\n clear$1();\n log.warn(\"Graph at first:\", JSON.stringify(graphlibJson.write(graph)));\n adjustClustersAndEdges(graph);\n log.warn(\"Graph after:\", JSON.stringify(graphlibJson.write(graph)));\n await recursiveRender(elem, graph, diagramtype, id);\n};\nexport {\n render as r\n};\n"], + "mappings": "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", + "names": ["write", "g", "json", "writeNodes", "writeEdges", "isUndefined_default", "clone_default", "map_default", "v", "nodeValue", "parent", "node", "e", "edgeValue", "edge", "clusterDb", "descendants", "parents", "clear$1", "isDescendant", "id", "ancenstorId", "log$1", "edgeInCluster", "edge", "clusterId", "copy", "graph", "newGraph", "rootId", "nodes", "node", "data", "edges", "data2", "e", "extractDescendants", "children", "res", "child", "findNonClusterChild", "_id", "getAnchorId", "adjustClustersAndEdges", "depth", "d1", "d2", "v", "w", "specialId", "edge1", "edge2", "write", "extractor", "hasChildren", "dir", "clusterGraph", "Graph", "sorter", "result", "sorted", "sortNodesByHierarchy", "rect", "parent", "shapeSvg", "rect2", "useHtmlLabels", "evaluate", "getConfig$1", "label", "text", "createText", "createLabel$1", "bbox", "div", "dv", "select_default", "padding", "halfPadding", "width", "rectBox", "point", "intersectRect$1", "noteGroup", "roundedWithTitle", "innerRect", "divider", "shapes", "clusterElems", "insertCluster", "elem", "shape", "clear", "recursiveRender", "_elem", "diagramtype", "parentCluster", "clusters", "edgePaths", "edgeLabels", "o", "newEl", "updateNodeBounds", "setNodeElem", "insertNode", "insertEdgeLabel", "layout", "diff", "positionNode", "paths", "insertEdge", "positionEdgeLabel", "n", "render", "markers", "insertMarkers$1"] +} diff --git a/public/chunk-KFCTMF6X.min.js b/public/chunk-KFCTMF6X.min.js new file mode 100644 index 0000000..bc81f19 --- /dev/null +++ b/public/chunk-KFCTMF6X.min.js @@ -0,0 +1,208 @@ +import{$a as R,Fa as k,Ka as F,Ra as vt,db as At,eb as Lt,fb as It,gb as Ot,hb as Nt,ib as Rt,jb as wt}from"./chunk-DJFTDYIK.min.js";var gt=function(){var t=function(C,r,n,i){for(n=n||{},i=C.length;i--;n[C[i]]=r);return n},s=[1,2],a=[1,3],h=[1,4],f=[2,4],d=[1,9],y=[1,11],E=[1,15],u=[1,16],b=[1,17],T=[1,18],w=[1,30],j=[1,19],U=[1,20],z=[1,21],M=[1,22],H=[1,23],X=[1,25],K=[1,26],W=[1,27],J=[1,28],q=[1,29],Q=[1,32],Z=[1,33],tt=[1,34],et=[1,35],$=[1,31],c=[1,4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],st=[1,4,5,13,14,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],Dt=[4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],ht={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,cssClassStatement:11,idStatement:12,DESCR:13,"-->":14,HIDE_EMPTY:15,scale:16,WIDTH:17,COMPOSIT_STATE:18,STRUCT_START:19,STRUCT_STOP:20,STATE_DESCR:21,AS:22,ID:23,FORK:24,JOIN:25,CHOICE:26,CONCURRENT:27,note:28,notePosition:29,NOTE_TEXT:30,direction:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,classDef:37,CLASSDEF_ID:38,CLASSDEF_STYLEOPTS:39,DEFAULT:40,class:41,CLASSENTITY_IDS:42,STYLECLASS:43,direction_tb:44,direction_bt:45,direction_rl:46,direction_lr:47,eol:48,";":49,EDGE_STATE:50,STYLE_SEPARATOR:51,left_of:52,right_of:53,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",13:"DESCR",14:"-->",15:"HIDE_EMPTY",16:"scale",17:"WIDTH",18:"COMPOSIT_STATE",19:"STRUCT_START",20:"STRUCT_STOP",21:"STATE_DESCR",22:"AS",23:"ID",24:"FORK",25:"JOIN",26:"CHOICE",27:"CONCURRENT",28:"note",30:"NOTE_TEXT",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"classDef",38:"CLASSDEF_ID",39:"CLASSDEF_STYLEOPTS",40:"DEFAULT",41:"class",42:"CLASSENTITY_IDS",43:"STYLECLASS",44:"direction_tb",45:"direction_bt",46:"direction_rl",47:"direction_lr",49:";",50:"EDGE_STATE",51:"STYLE_SEPARATOR",52:"left_of",53:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[31,1],[31,1],[31,1],[31,1],[48,1],[48,1],[12,1],[12,1],[12,3],[12,3],[29,1],[29,1]],performAction:function(r,n,i,o,p,e,B){var l=e.length-1;switch(p){case 3:return o.setRootDoc(e[l]),e[l];case 4:this.$=[];break;case 5:e[l]!="nl"&&(e[l-1].push(e[l]),this.$=e[l-1]);break;case 6:case 7:this.$=e[l];break;case 8:this.$="nl";break;case 11:this.$=e[l];break;case 12:let P=e[l-1];P.description=o.trimColon(e[l]),this.$=P;break;case 13:this.$={stmt:"relation",state1:e[l-2],state2:e[l]};break;case 14:let ft=o.trimColon(e[l]);this.$={stmt:"relation",state1:e[l-3],state2:e[l-1],description:ft};break;case 18:this.$={stmt:"state",id:e[l-3],type:"default",description:"",doc:e[l-1]};break;case 19:var v=e[l],O=e[l-2].trim();if(e[l].match(":")){var it=e[l].split(":");v=it[0],O=[O,it[1]]}this.$={stmt:"state",id:v,type:"default",description:O};break;case 20:this.$={stmt:"state",id:e[l-3],type:"default",description:e[l-5],doc:e[l-1]};break;case 21:this.$={stmt:"state",id:e[l],type:"fork"};break;case 22:this.$={stmt:"state",id:e[l],type:"join"};break;case 23:this.$={stmt:"state",id:e[l],type:"choice"};break;case 24:this.$={stmt:"state",id:o.getDividerId(),type:"divider"};break;case 25:this.$={stmt:"state",id:e[l-1].trim(),note:{position:e[l-2].trim(),text:e[l].trim()}};break;case 28:this.$=e[l].trim(),o.setAccTitle(this.$);break;case 29:case 30:this.$=e[l].trim(),o.setAccDescription(this.$);break;case 31:case 32:this.$={stmt:"classDef",id:e[l-1].trim(),classes:e[l].trim()};break;case 33:this.$={stmt:"applyClass",id:e[l-1].trim(),styleClass:e[l].trim()};break;case 34:o.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 35:o.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 36:o.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 37:o.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 40:case 41:this.$={stmt:"state",id:e[l].trim(),type:"default",description:""};break;case 42:this.$={stmt:"state",id:e[l-2].trim(),classes:[e[l].trim()],type:"default",description:""};break;case 43:this.$={stmt:"state",id:e[l-2].trim(),classes:[e[l].trim()],type:"default",description:""};break}},table:[{3:1,4:s,5:a,6:h},{1:[3]},{3:5,4:s,5:a,6:h},{3:6,4:s,5:a,6:h},t([1,4,5,15,16,18,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],f,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:d,5:y,8:8,9:10,10:12,11:13,12:14,15:E,16:u,18:b,21:T,23:w,24:j,25:U,26:z,27:M,28:H,31:24,32:X,34:K,36:W,37:J,41:q,44:Q,45:Z,46:tt,47:et,50:$},t(c,[2,5]),{9:36,10:12,11:13,12:14,15:E,16:u,18:b,21:T,23:w,24:j,25:U,26:z,27:M,28:H,31:24,32:X,34:K,36:W,37:J,41:q,44:Q,45:Z,46:tt,47:et,50:$},t(c,[2,7]),t(c,[2,8]),t(c,[2,9]),t(c,[2,10]),t(c,[2,11],{13:[1,37],14:[1,38]}),t(c,[2,15]),{17:[1,39]},t(c,[2,17],{19:[1,40]}),{22:[1,41]},t(c,[2,21]),t(c,[2,22]),t(c,[2,23]),t(c,[2,24]),{29:42,30:[1,43],52:[1,44],53:[1,45]},t(c,[2,27]),{33:[1,46]},{35:[1,47]},t(c,[2,30]),{38:[1,48],40:[1,49]},{42:[1,50]},t(st,[2,40],{51:[1,51]}),t(st,[2,41],{51:[1,52]}),t(c,[2,34]),t(c,[2,35]),t(c,[2,36]),t(c,[2,37]),t(c,[2,6]),t(c,[2,12]),{12:53,23:w,50:$},t(c,[2,16]),t(Dt,f,{7:54}),{23:[1,55]},{23:[1,56]},{22:[1,57]},{23:[2,44]},{23:[2,45]},t(c,[2,28]),t(c,[2,29]),{39:[1,58]},{39:[1,59]},{43:[1,60]},{23:[1,61]},{23:[1,62]},t(c,[2,13],{13:[1,63]}),{4:d,5:y,8:8,9:10,10:12,11:13,12:14,15:E,16:u,18:b,20:[1,64],21:T,23:w,24:j,25:U,26:z,27:M,28:H,31:24,32:X,34:K,36:W,37:J,41:q,44:Q,45:Z,46:tt,47:et,50:$},t(c,[2,19],{19:[1,65]}),{30:[1,66]},{23:[1,67]},t(c,[2,31]),t(c,[2,32]),t(c,[2,33]),t(st,[2,42]),t(st,[2,43]),t(c,[2,14]),t(c,[2,18]),t(Dt,f,{7:68}),t(c,[2,25]),t(c,[2,26]),{4:d,5:y,8:8,9:10,10:12,11:13,12:14,15:E,16:u,18:b,20:[1,69],21:T,23:w,24:j,25:U,26:z,27:M,28:H,31:24,32:X,34:K,36:W,37:J,41:q,44:Q,45:Z,46:tt,47:et,50:$},t(c,[2,20])],defaultActions:{5:[2,1],6:[2,2],44:[2,44],45:[2,45]},parseError:function(r,n){if(n.recoverable)this.trace(r);else{var i=new Error(r);throw i.hash=n,i}},parse:function(r){var n=this,i=[0],o=[],p=[null],e=[],B=this.table,l="",v=0,O=0,it=2,P=1,ft=e.slice.call(arguments,1),S=Object.create(this.lexer),A={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(A.yy[dt]=this.yy[dt]);S.setInput(r,A.yy),A.yy.lexer=S,A.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var yt=S.yylloc;e.push(yt);var Wt=S.options&&S.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Jt(){var D;return D=o.pop()||S.lex()||P,typeof D!="number"&&(D instanceof Array&&(o=D,D=o.pop()),D=n.symbols_[D]||D),D}for(var _,L,m,pt,N={},rt,x,Ct,nt;;){if(L=i[i.length-1],this.defaultActions[L]?m=this.defaultActions[L]:((_===null||typeof _>"u")&&(_=Jt()),m=B[L]&&B[L][_]),typeof m>"u"||!m.length||!m[0]){var St="";nt=[];for(rt in B[L])this.terminals_[rt]&&rt>it&&nt.push("'"+this.terminals_[rt]+"'");S.showPosition?St="Parse error on line "+(v+1)+`: +`+S.showPosition()+` +Expecting `+nt.join(", ")+", got '"+(this.terminals_[_]||_)+"'":St="Parse error on line "+(v+1)+": Unexpected "+(_==P?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(St,{text:S.match,token:this.terminals_[_]||_,line:S.yylineno,loc:yt,expected:nt})}if(m[0]instanceof Array&&m.length>1)throw new Error("Parse Error: multiple actions possible at state: "+L+", token: "+_);switch(m[0]){case 1:i.push(_),p.push(S.yytext),e.push(S.yylloc),i.push(m[1]),_=null,O=S.yyleng,l=S.yytext,v=S.yylineno,yt=S.yylloc;break;case 2:if(x=this.productions_[m[1]][1],N.$=p[p.length-x],N._$={first_line:e[e.length-(x||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(x||1)].first_column,last_column:e[e.length-1].last_column},Wt&&(N._$.range=[e[e.length-(x||1)].range[0],e[e.length-1].range[1]]),pt=this.performAction.apply(N,[l,O,v,A.yy,m[1],p,e].concat(ft)),typeof pt<"u")return pt;x&&(i=i.slice(0,-1*x*2),p=p.slice(0,-1*x),e=e.slice(0,-1*x)),i.push(this.productions_[m[1]][0]),p.push(N.$),e.push(N._$),Ct=B[i[i.length-2]][i[i.length-1]],i.push(Ct);break;case 3:return!0}}return!0}},Kt=function(){var C={EOF:1,parseError:function(n,i){if(this.yy.parser)this.yy.parser.parseError(n,i);else throw new Error(n)},setInput:function(r,n){return this.yy=n||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var n=r.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},unput:function(r){var n=r.length,i=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var o=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===o.length?this.yylloc.first_column:0)+o[o.length-i.length].length-i[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(r){this.unput(this.match.slice(r))},pastInput:function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var r=this.pastInput(),n=new Array(r.length+1).join("-");return r+this.upcomingInput()+` +`+n+"^"},test_match:function(r,n){var i,o,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),o=r[0].match(/(?:\r\n?|\n).*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-o[o.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+r[0].length},this.yytext+=r[0],this.match+=r[0],this.matches=r,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(r[0].length),this.matched+=r[0],i=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var e in p)this[e]=p[e];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var r,n,i,o;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),e=0;en[0].length)){if(n=i,o=e,this.options.backtrack_lexer){if(r=this.test_match(i,p[e]),r!==!1)return r;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(r=this.test_match(n,p[o]),r!==!1?r:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var n=this.next();return n||this.lex()},begin:function(n){this.conditionStack.push(n)},popState:function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},pushState:function(n){this.begin(n)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(n,i,o,p){switch(o){case 0:return 40;case 1:return 44;case 2:return 45;case 3:return 46;case 4:return 47;case 5:break;case 6:break;case 7:return 5;case 8:break;case 9:break;case 10:break;case 11:break;case 12:return this.pushState("SCALE"),16;case 13:return 17;case 14:this.popState();break;case 15:return this.begin("acc_title"),32;case 16:return this.popState(),"acc_title_value";case 17:return this.begin("acc_descr"),34;case 18:return this.popState(),"acc_descr_value";case 19:this.begin("acc_descr_multiline");break;case 20:this.popState();break;case 21:return"acc_descr_multiline_value";case 22:return this.pushState("CLASSDEF"),37;case 23:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 24:return this.popState(),this.pushState("CLASSDEFID"),38;case 25:return this.popState(),39;case 26:return this.pushState("CLASS"),41;case 27:return this.popState(),this.pushState("CLASS_STYLE"),42;case 28:return this.popState(),43;case 29:return this.pushState("SCALE"),16;case 30:return 17;case 31:this.popState();break;case 32:this.pushState("STATE");break;case 33:return this.popState(),i.yytext=i.yytext.slice(0,-8).trim(),24;case 34:return this.popState(),i.yytext=i.yytext.slice(0,-8).trim(),25;case 35:return this.popState(),i.yytext=i.yytext.slice(0,-10).trim(),26;case 36:return this.popState(),i.yytext=i.yytext.slice(0,-8).trim(),24;case 37:return this.popState(),i.yytext=i.yytext.slice(0,-8).trim(),25;case 38:return this.popState(),i.yytext=i.yytext.slice(0,-10).trim(),26;case 39:return 44;case 40:return 45;case 41:return 46;case 42:return 47;case 43:this.pushState("STATE_STRING");break;case 44:return this.pushState("STATE_ID"),"AS";case 45:return this.popState(),"ID";case 46:this.popState();break;case 47:return"STATE_DESCR";case 48:return 18;case 49:this.popState();break;case 50:return this.popState(),this.pushState("struct"),19;case 51:break;case 52:return this.popState(),20;case 53:break;case 54:return this.begin("NOTE"),28;case 55:return this.popState(),this.pushState("NOTE_ID"),52;case 56:return this.popState(),this.pushState("NOTE_ID"),53;case 57:this.popState(),this.pushState("FLOATING_NOTE");break;case 58:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 59:break;case 60:return"NOTE_TEXT";case 61:return this.popState(),"ID";case 62:return this.popState(),this.pushState("NOTE_TEXT"),23;case 63:return this.popState(),i.yytext=i.yytext.substr(2).trim(),30;case 64:return this.popState(),i.yytext=i.yytext.slice(0,-8).trim(),30;case 65:return 6;case 66:return 6;case 67:return 15;case 68:return 50;case 69:return 23;case 70:return i.yytext=i.yytext.trim(),13;case 71:return 14;case 72:return 27;case 73:return 51;case 74:return 5;case 75:return"INVALID"}},rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},struct:{rules:[9,10,22,26,32,39,40,41,42,51,52,53,54,68,69,70,71,72],inclusive:!1},FLOATING_NOTE_ID:{rules:[61],inclusive:!1},FLOATING_NOTE:{rules:[58,59,60],inclusive:!1},NOTE_TEXT:{rules:[63,64],inclusive:!1},NOTE_ID:{rules:[62],inclusive:!1},NOTE:{rules:[55,56,57],inclusive:!1},CLASS_STYLE:{rules:[28],inclusive:!1},CLASS:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[25],inclusive:!1},CLASSDEF:{rules:[23,24],inclusive:!1},acc_descr_multiline:{rules:[20,21],inclusive:!1},acc_descr:{rules:[18],inclusive:!1},acc_title:{rules:[16],inclusive:!1},SCALE:{rules:[13,14,30,31],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[45],inclusive:!1},STATE_STRING:{rules:[46,47],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,33,34,35,36,37,38,43,44,48,49,50],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,19,22,26,29,32,50,54,65,66,67,68,69,70,71,73,74,75],inclusive:!0}}};return C}();ht.lexer=Kt;function ut(){this.yy={}}return ut.prototype=ht,ht.Parser=ut,new ut}();gt.parser=gt;var De=gt,qt="LR",Ce="TB",_t="state",Ft="relation",Qt="classDef",Zt="applyClass",Et="default",te="divider",bt="[*]",Vt="start",Yt=bt,Gt="end",$t="color",Bt="fill",ee="bgFill",se=",";function jt(){return{}}var Ut=qt,ct=[],V=jt(),zt=()=>({relations:[],states:{},documents:{}}),ot={root:zt()},g=ot.root,Y=0,Pt=0,ie={LINE:0,DOTTED_LINE:1},re={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},at=t=>JSON.parse(JSON.stringify(t)),ne=t=>{k.info("Setting root doc",t),ct=t},ae=()=>ct,lt=(t,s,a)=>{if(s.stmt===Ft)lt(t,s.state1,!0),lt(t,s.state2,!1);else if(s.stmt===_t&&(s.id==="[*]"?(s.id=a?t.id+"_start":t.id+"_end",s.start=a):s.id=s.id.trim()),s.doc){let h=[],f=[],d;for(d=0;d0&&f.length>0){let y={stmt:_t,id:vt(),type:"divider",doc:at(f)};h.push(at(y)),s.doc=h}s.doc.forEach(y=>lt(s,y,!0))}},le=()=>(lt({id:"root"},{id:"root",doc:ct},!0),{id:"root",doc:ct}),ce=t=>{let s;t.doc?s=t.doc:s=t,k.info(s),Mt(!0),k.info("Extract",s),s.forEach(a=>{switch(a.stmt){case _t:I(a.id.trim(),a.type,a.doc,a.description,a.note,a.classes,a.styles,a.textStyles);break;case Ft:Ht(a.state1,a.state2,a.description);break;case Qt:Xt(a.id.trim(),a.classes);break;case Zt:xt(a.id.trim(),a.styleClass);break}})},I=function(t,s=Et,a=null,h=null,f=null,d=null,y=null,E=null){let u=t?.trim();g.states[u]===void 0?(k.info("Adding state ",u,h),g.states[u]={id:u,descriptions:[],type:s,doc:a,note:f,classes:[],styles:[],textStyles:[]}):(g.states[u].doc||(g.states[u].doc=a),g.states[u].type||(g.states[u].type=s)),h&&(k.info("Setting state description",u,h),typeof h=="string"&&kt(u,h.trim()),typeof h=="object"&&h.forEach(b=>kt(u,b.trim()))),f&&(g.states[u].note=f,g.states[u].note.text=F.sanitizeText(g.states[u].note.text,R())),d&&(k.info("Setting state classes",u,d),(typeof d=="string"?[d]:d).forEach(T=>xt(u,T.trim()))),y&&(k.info("Setting state styles",u,y),(typeof y=="string"?[y]:y).forEach(T=>_e(u,T.trim()))),E&&(k.info("Setting state styles",u,y),(typeof E=="string"?[E]:E).forEach(T=>me(u,T.trim())))},Mt=function(t){ot={root:zt()},g=ot.root,Y=0,V=jt(),t||At()},G=function(t){return g.states[t]},oe=function(){return g.states},he=function(){k.info("Documents = ",ot)},ue=function(){return g.relations};function mt(t=""){let s=t;return t===bt&&(Y++,s=`${Vt}${Y}`),s}function Tt(t="",s=Et){return t===bt?Vt:s}function fe(t=""){let s=t;return t===Yt&&(Y++,s=`${Gt}${Y}`),s}function de(t="",s=Et){return t===Yt?Gt:s}function ye(t,s,a){let h=mt(t.id.trim()),f=Tt(t.id.trim(),t.type),d=mt(s.id.trim()),y=Tt(s.id.trim(),s.type);I(h,f,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),I(d,y,s.doc,s.description,s.note,s.classes,s.styles,s.textStyles),g.relations.push({id1:h,id2:d,relationTitle:F.sanitizeText(a,R())})}var Ht=function(t,s,a){if(typeof t=="object")ye(t,s,a);else{let h=mt(t.trim()),f=Tt(t),d=fe(s.trim()),y=de(s);I(h,f),I(d,y),g.relations.push({id1:h,id2:d,title:F.sanitizeText(a,R())})}},kt=function(t,s){let a=g.states[t],h=s.startsWith(":")?s.replace(":","").trim():s;a.descriptions.push(F.sanitizeText(h,R()))},pe=function(t){return t.substring(0,1)===":"?t.substr(2).trim():t.trim()},Se=()=>(Pt++,"divider-id-"+Pt),Xt=function(t,s=""){V[t]===void 0&&(V[t]={id:t,styles:[],textStyles:[]});let a=V[t];s?.split(se).forEach(h=>{let f=h.replace(/([^;]*);/,"$1").trim();if(h.match($t)){let y=f.replace(Bt,ee).replace($t,Bt);a.textStyles.push(y)}a.styles.push(f)})},ge=function(){return V},xt=function(t,s){t.split(",").forEach(function(a){let h=G(a);if(h===void 0){let f=a.trim();I(f),h=G(f)}h.classes.push(s)})},_e=function(t,s){let a=G(t);a!==void 0&&a.textStyles.push(s)},me=function(t,s){let a=G(t);a!==void 0&&a.textStyles.push(s)},Te=()=>Ut,ke=t=>{Ut=t},Ee=t=>t&&t[0]===":"?t.substr(1).trim():t.trim(),ve={getConfig:()=>R().state,addState:I,clear:Mt,getState:G,getStates:oe,getRelations:ue,getClasses:ge,getDirection:Te,addRelation:Ht,getDividerId:Se,setDirection:ke,cleanupLabel:pe,lineType:ie,relationType:re,logDocuments:he,getRootDoc:ae,setRootDoc:ne,getRootDocV2:le,extract:ce,trimColon:Ee,getAccTitle:It,setAccTitle:Lt,getAccDescription:Nt,setAccDescription:Ot,addStyleClass:Xt,setCssClass:xt,addDescription:kt,setDiagramTitle:Rt,getDiagramTitle:wt},be=t=>` +defs #statediagram-barbEnd { + fill: ${t.transitionColor}; + stroke: ${t.transitionColor}; + } +g.stateGroup text { + fill: ${t.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${t.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${t.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; +} + +g.stateGroup line { + stroke: ${t.lineColor}; + stroke-width: 1; +} + +.transition { + stroke: ${t.transitionColor}; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: ${t.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${t.noteBorderColor}; + fill: ${t.noteBkgColor}; + + text { + fill: ${t.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${t.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${t.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel .label text { + fill: ${t.transitionLabelColor||t.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${t.transitionLabelColor||t.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${t.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node .fork-join { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node circle.state-end { + fill: ${t.innerEndBackground}; + stroke: ${t.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${t.compositeBackground||t.background}; + // stroke: ${t.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${t.stateBkg||t.mainBkg}; + stroke: ${t.stateBorder||t.nodeBorder}; + stroke-width: 1px; +} +.node polygon { + fill: ${t.mainBkg}; + stroke: ${t.stateBorder||t.nodeBorder};; + stroke-width: 1px; +} +#statediagram-barbEnd { + fill: ${t.lineColor}; +} + +.statediagram-cluster rect { + fill: ${t.compositeTitleBackground}; + stroke: ${t.stateBorder||t.nodeBorder}; + stroke-width: 1px; +} + +.cluster-label, .nodeLabel { + color: ${t.stateLabelColor}; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${t.stateBorder||t.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${t.compositeBackground||t.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${t.altBackground?t.altBackground:"#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${t.altBackground?t.altBackground:"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${t.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${t.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${t.noteTextColor}; +} + +#dependencyStart, #dependencyEnd { + fill: ${t.lineColor}; + stroke: ${t.lineColor}; + stroke-width: 1; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; +} +`,Ae=be;export{De as a,Ce as b,_t as c,Ft as d,Et as e,te as f,ve as g,Ae as h}; +//# sourceMappingURL=chunk-KFCTMF6X.min.js.map diff --git a/public/chunk-KFCTMF6X.min.js.map b/public/chunk-KFCTMF6X.min.js.map new file mode 100644 index 0000000..17b9762 --- /dev/null +++ b/public/chunk-KFCTMF6X.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/mermaid/dist/styles-409bbf16.js"], + "sourcesContent": ["import { c as getConfig, g as getAccTitle, s as setAccTitle, a as getAccDescription, b as setAccDescription, q as setDiagramTitle, r as getDiagramTitle, l as log, e as common, t as clear$1, G as generateId } from \"./mermaid-485fd1a4.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 4], $V3 = [2, 4], $V4 = [1, 9], $V5 = [1, 11], $V6 = [1, 15], $V7 = [1, 16], $V8 = [1, 17], $V9 = [1, 18], $Va = [1, 30], $Vb = [1, 19], $Vc = [1, 20], $Vd = [1, 21], $Ve = [1, 22], $Vf = [1, 23], $Vg = [1, 25], $Vh = [1, 26], $Vi = [1, 27], $Vj = [1, 28], $Vk = [1, 29], $Vl = [1, 32], $Vm = [1, 33], $Vn = [1, 34], $Vo = [1, 35], $Vp = [1, 31], $Vq = [1, 4, 5, 15, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], $Vr = [1, 4, 5, 13, 14, 15, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], $Vs = [4, 5, 15, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"SPACE\": 4, \"NL\": 5, \"SD\": 6, \"document\": 7, \"line\": 8, \"statement\": 9, \"classDefStatement\": 10, \"cssClassStatement\": 11, \"idStatement\": 12, \"DESCR\": 13, \"-->\": 14, \"HIDE_EMPTY\": 15, \"scale\": 16, \"WIDTH\": 17, \"COMPOSIT_STATE\": 18, \"STRUCT_START\": 19, \"STRUCT_STOP\": 20, \"STATE_DESCR\": 21, \"AS\": 22, \"ID\": 23, \"FORK\": 24, \"JOIN\": 25, \"CHOICE\": 26, \"CONCURRENT\": 27, \"note\": 28, \"notePosition\": 29, \"NOTE_TEXT\": 30, \"direction\": 31, \"acc_title\": 32, \"acc_title_value\": 33, \"acc_descr\": 34, \"acc_descr_value\": 35, \"acc_descr_multiline_value\": 36, \"classDef\": 37, \"CLASSDEF_ID\": 38, \"CLASSDEF_STYLEOPTS\": 39, \"DEFAULT\": 40, \"class\": 41, \"CLASSENTITY_IDS\": 42, \"STYLECLASS\": 43, \"direction_tb\": 44, \"direction_bt\": 45, \"direction_rl\": 46, \"direction_lr\": 47, \"eol\": 48, \";\": 49, \"EDGE_STATE\": 50, \"STYLE_SEPARATOR\": 51, \"left_of\": 52, \"right_of\": 53, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACE\", 5: \"NL\", 6: \"SD\", 13: \"DESCR\", 14: \"-->\", 15: \"HIDE_EMPTY\", 16: \"scale\", 17: \"WIDTH\", 18: \"COMPOSIT_STATE\", 19: \"STRUCT_START\", 20: \"STRUCT_STOP\", 21: \"STATE_DESCR\", 22: \"AS\", 23: \"ID\", 24: \"FORK\", 25: \"JOIN\", 26: \"CHOICE\", 27: \"CONCURRENT\", 28: \"note\", 30: \"NOTE_TEXT\", 32: \"acc_title\", 33: \"acc_title_value\", 34: \"acc_descr\", 35: \"acc_descr_value\", 36: \"acc_descr_multiline_value\", 37: \"classDef\", 38: \"CLASSDEF_ID\", 39: \"CLASSDEF_STYLEOPTS\", 40: \"DEFAULT\", 41: \"class\", 42: \"CLASSENTITY_IDS\", 43: \"STYLECLASS\", 44: \"direction_tb\", 45: \"direction_bt\", 46: \"direction_rl\", 47: \"direction_lr\", 49: \";\", 50: \"EDGE_STATE\", 51: \"STYLE_SEPARATOR\", 52: \"left_of\", 53: \"right_of\" },\n productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [9, 1], [9, 1], [9, 1], [9, 2], [9, 3], [9, 4], [9, 1], [9, 2], [9, 1], [9, 4], [9, 3], [9, 6], [9, 1], [9, 1], [9, 1], [9, 1], [9, 4], [9, 4], [9, 1], [9, 2], [9, 2], [9, 1], [10, 3], [10, 3], [11, 3], [31, 1], [31, 1], [31, 1], [31, 1], [48, 1], [48, 1], [12, 1], [12, 1], [12, 3], [12, 3], [29, 1], [29, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n yy.setRootDoc($$[$0]);\n return $$[$0];\n case 4:\n this.$ = [];\n break;\n case 5:\n if ($$[$0] != \"nl\") {\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n }\n break;\n case 6:\n case 7:\n this.$ = $$[$0];\n break;\n case 8:\n this.$ = \"nl\";\n break;\n case 11:\n this.$ = $$[$0];\n break;\n case 12:\n const stateStmt = $$[$0 - 1];\n stateStmt.description = yy.trimColon($$[$0]);\n this.$ = stateStmt;\n break;\n case 13:\n this.$ = { stmt: \"relation\", state1: $$[$0 - 2], state2: $$[$0] };\n break;\n case 14:\n const relDescription = yy.trimColon($$[$0]);\n this.$ = { stmt: \"relation\", state1: $$[$0 - 3], state2: $$[$0 - 1], description: relDescription };\n break;\n case 18:\n this.$ = { stmt: \"state\", id: $$[$0 - 3], type: \"default\", description: \"\", doc: $$[$0 - 1] };\n break;\n case 19:\n var id = $$[$0];\n var description = $$[$0 - 2].trim();\n if ($$[$0].match(\":\")) {\n var parts = $$[$0].split(\":\");\n id = parts[0];\n description = [description, parts[1]];\n }\n this.$ = { stmt: \"state\", id, type: \"default\", description };\n break;\n case 20:\n this.$ = { stmt: \"state\", id: $$[$0 - 3], type: \"default\", description: $$[$0 - 5], doc: $$[$0 - 1] };\n break;\n case 21:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"fork\" };\n break;\n case 22:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"join\" };\n break;\n case 23:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"choice\" };\n break;\n case 24:\n this.$ = { stmt: \"state\", id: yy.getDividerId(), type: \"divider\" };\n break;\n case 25:\n this.$ = { stmt: \"state\", id: $$[$0 - 1].trim(), note: { position: $$[$0 - 2].trim(), text: $$[$0].trim() } };\n break;\n case 28:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 29:\n case 30:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 31:\n case 32:\n this.$ = { stmt: \"classDef\", id: $$[$0 - 1].trim(), classes: $$[$0].trim() };\n break;\n case 33:\n this.$ = { stmt: \"applyClass\", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() };\n break;\n case 34:\n yy.setDirection(\"TB\");\n this.$ = { stmt: \"dir\", value: \"TB\" };\n break;\n case 35:\n yy.setDirection(\"BT\");\n this.$ = { stmt: \"dir\", value: \"BT\" };\n break;\n case 36:\n yy.setDirection(\"RL\");\n this.$ = { stmt: \"dir\", value: \"RL\" };\n break;\n case 37:\n yy.setDirection(\"LR\");\n this.$ = { stmt: \"dir\", value: \"LR\" };\n break;\n case 40:\n case 41:\n this.$ = { stmt: \"state\", id: $$[$0].trim(), type: \"default\", description: \"\" };\n break;\n case 42:\n this.$ = { stmt: \"state\", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: \"default\", description: \"\" };\n break;\n case 43:\n this.$ = { stmt: \"state\", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: \"default\", description: \"\" };\n break;\n }\n },\n table: [{ 3: 1, 4: $V0, 5: $V1, 6: $V2 }, { 1: [3] }, { 3: 5, 4: $V0, 5: $V1, 6: $V2 }, { 3: 6, 4: $V0, 5: $V1, 6: $V2 }, o([1, 4, 5, 15, 16, 18, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], $V3, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 15: $V6, 16: $V7, 18: $V8, 21: $V9, 23: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 31: 24, 32: $Vg, 34: $Vh, 36: $Vi, 37: $Vj, 41: $Vk, 44: $Vl, 45: $Vm, 46: $Vn, 47: $Vo, 50: $Vp }, o($Vq, [2, 5]), { 9: 36, 10: 12, 11: 13, 12: 14, 15: $V6, 16: $V7, 18: $V8, 21: $V9, 23: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 31: 24, 32: $Vg, 34: $Vh, 36: $Vi, 37: $Vj, 41: $Vk, 44: $Vl, 45: $Vm, 46: $Vn, 47: $Vo, 50: $Vp }, o($Vq, [2, 7]), o($Vq, [2, 8]), o($Vq, [2, 9]), o($Vq, [2, 10]), o($Vq, [2, 11], { 13: [1, 37], 14: [1, 38] }), o($Vq, [2, 15]), { 17: [1, 39] }, o($Vq, [2, 17], { 19: [1, 40] }), { 22: [1, 41] }, o($Vq, [2, 21]), o($Vq, [2, 22]), o($Vq, [2, 23]), o($Vq, [2, 24]), { 29: 42, 30: [1, 43], 52: [1, 44], 53: [1, 45] }, o($Vq, [2, 27]), { 33: [1, 46] }, { 35: [1, 47] }, o($Vq, [2, 30]), { 38: [1, 48], 40: [1, 49] }, { 42: [1, 50] }, o($Vr, [2, 40], { 51: [1, 51] }), o($Vr, [2, 41], { 51: [1, 52] }), o($Vq, [2, 34]), o($Vq, [2, 35]), o($Vq, [2, 36]), o($Vq, [2, 37]), o($Vq, [2, 6]), o($Vq, [2, 12]), { 12: 53, 23: $Va, 50: $Vp }, o($Vq, [2, 16]), o($Vs, $V3, { 7: 54 }), { 23: [1, 55] }, { 23: [1, 56] }, { 22: [1, 57] }, { 23: [2, 44] }, { 23: [2, 45] }, o($Vq, [2, 28]), o($Vq, [2, 29]), { 39: [1, 58] }, { 39: [1, 59] }, { 43: [1, 60] }, { 23: [1, 61] }, { 23: [1, 62] }, o($Vq, [2, 13], { 13: [1, 63] }), { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 15: $V6, 16: $V7, 18: $V8, 20: [1, 64], 21: $V9, 23: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 31: 24, 32: $Vg, 34: $Vh, 36: $Vi, 37: $Vj, 41: $Vk, 44: $Vl, 45: $Vm, 46: $Vn, 47: $Vo, 50: $Vp }, o($Vq, [2, 19], { 19: [1, 65] }), { 30: [1, 66] }, { 23: [1, 67] }, o($Vq, [2, 31]), o($Vq, [2, 32]), o($Vq, [2, 33]), o($Vr, [2, 42]), o($Vr, [2, 43]), o($Vq, [2, 14]), o($Vq, [2, 18]), o($Vs, $V3, { 7: 68 }), o($Vq, [2, 25]), o($Vq, [2, 26]), { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 15: $V6, 16: $V7, 18: $V8, 20: [1, 69], 21: $V9, 23: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 31: 24, 32: $Vg, 34: $Vh, 36: $Vi, 37: $Vj, 41: $Vk, 44: $Vl, 45: $Vm, 46: $Vn, 47: $Vo, 50: $Vp }, o($Vq, [2, 20])],\n defaultActions: { 5: [2, 1], 6: [2, 2], 44: [2, 44], 45: [2, 45] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 40;\n case 1:\n return 44;\n case 2:\n return 45;\n case 3:\n return 46;\n case 4:\n return 47;\n case 5:\n break;\n case 6:\n break;\n case 7:\n return 5;\n case 8:\n break;\n case 9:\n break;\n case 10:\n break;\n case 11:\n break;\n case 12:\n this.pushState(\"SCALE\");\n return 16;\n case 13:\n return 17;\n case 14:\n this.popState();\n break;\n case 15:\n this.begin(\"acc_title\");\n return 32;\n case 16:\n this.popState();\n return \"acc_title_value\";\n case 17:\n this.begin(\"acc_descr\");\n return 34;\n case 18:\n this.popState();\n return \"acc_descr_value\";\n case 19:\n this.begin(\"acc_descr_multiline\");\n break;\n case 20:\n this.popState();\n break;\n case 21:\n return \"acc_descr_multiline_value\";\n case 22:\n this.pushState(\"CLASSDEF\");\n return 37;\n case 23:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return \"DEFAULT_CLASSDEF_ID\";\n case 24:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return 38;\n case 25:\n this.popState();\n return 39;\n case 26:\n this.pushState(\"CLASS\");\n return 41;\n case 27:\n this.popState();\n this.pushState(\"CLASS_STYLE\");\n return 42;\n case 28:\n this.popState();\n return 43;\n case 29:\n this.pushState(\"SCALE\");\n return 16;\n case 30:\n return 17;\n case 31:\n this.popState();\n break;\n case 32:\n this.pushState(\"STATE\");\n break;\n case 33:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 24;\n case 34:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 25;\n case 35:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -10).trim();\n return 26;\n case 36:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 24;\n case 37:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 25;\n case 38:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -10).trim();\n return 26;\n case 39:\n return 44;\n case 40:\n return 45;\n case 41:\n return 46;\n case 42:\n return 47;\n case 43:\n this.pushState(\"STATE_STRING\");\n break;\n case 44:\n this.pushState(\"STATE_ID\");\n return \"AS\";\n case 45:\n this.popState();\n return \"ID\";\n case 46:\n this.popState();\n break;\n case 47:\n return \"STATE_DESCR\";\n case 48:\n return 18;\n case 49:\n this.popState();\n break;\n case 50:\n this.popState();\n this.pushState(\"struct\");\n return 19;\n case 51:\n break;\n case 52:\n this.popState();\n return 20;\n case 53:\n break;\n case 54:\n this.begin(\"NOTE\");\n return 28;\n case 55:\n this.popState();\n this.pushState(\"NOTE_ID\");\n return 52;\n case 56:\n this.popState();\n this.pushState(\"NOTE_ID\");\n return 53;\n case 57:\n this.popState();\n this.pushState(\"FLOATING_NOTE\");\n break;\n case 58:\n this.popState();\n this.pushState(\"FLOATING_NOTE_ID\");\n return \"AS\";\n case 59:\n break;\n case 60:\n return \"NOTE_TEXT\";\n case 61:\n this.popState();\n return \"ID\";\n case 62:\n this.popState();\n this.pushState(\"NOTE_TEXT\");\n return 23;\n case 63:\n this.popState();\n yy_.yytext = yy_.yytext.substr(2).trim();\n return 30;\n case 64:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 30;\n case 65:\n return 6;\n case 66:\n return 6;\n case 67:\n return 15;\n case 68:\n return 50;\n case 69:\n return 23;\n case 70:\n yy_.yytext = yy_.yytext.trim();\n return 13;\n case 71:\n return 14;\n case 72:\n return 27;\n case 73:\n return 51;\n case 74:\n return 5;\n case 75:\n return \"INVALID\";\n }\n },\n rules: [/^(?:default\\b)/i, /^(?:.*direction\\s+TB[^\\n]*)/i, /^(?:.*direction\\s+BT[^\\n]*)/i, /^(?:.*direction\\s+RL[^\\n]*)/i, /^(?:.*direction\\s+LR[^\\n]*)/i, /^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:[\\s]+)/i, /^(?:((?!\\n)\\s)+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:scale\\s+)/i, /^(?:\\d+)/i, /^(?:\\s+width\\b)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:classDef\\s+)/i, /^(?:DEFAULT\\s+)/i, /^(?:\\w+\\s+)/i, /^(?:[^\\n]*)/i, /^(?:class\\s+)/i, /^(?:(\\w+)+((,\\s*\\w+)*))/i, /^(?:[^\\n]*)/i, /^(?:scale\\s+)/i, /^(?:\\d+)/i, /^(?:\\s+width\\b)/i, /^(?:state\\s+)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*\\[\\[fork\\]\\])/i, /^(?:.*\\[\\[join\\]\\])/i, /^(?:.*\\[\\[choice\\]\\])/i, /^(?:.*direction\\s+TB[^\\n]*)/i, /^(?:.*direction\\s+BT[^\\n]*)/i, /^(?:.*direction\\s+RL[^\\n]*)/i, /^(?:.*direction\\s+LR[^\\n]*)/i, /^(?:[\"])/i, /^(?:\\s*as\\s+)/i, /^(?:[^\\n\\{]*)/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[^\\n\\s\\{]+)/i, /^(?:\\n)/i, /^(?:\\{)/i, /^(?:%%(?!\\{)[^\\n]*)/i, /^(?:\\})/i, /^(?:[\\n])/i, /^(?:note\\s+)/i, /^(?:left of\\b)/i, /^(?:right of\\b)/i, /^(?:\")/i, /^(?:\\s*as\\s*)/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[^\\n]*)/i, /^(?:\\s*[^:\\n\\s\\-]+)/i, /^(?:\\s*:[^:\\n;]+)/i, /^(?:[\\s\\S]*?end note\\b)/i, /^(?:stateDiagram\\s+)/i, /^(?:stateDiagram-v2\\s+)/i, /^(?:hide empty description\\b)/i, /^(?:\\[\\*\\])/i, /^(?:[^:\\n\\s\\-\\{]+)/i, /^(?:\\s*:[^:\\n;]+)/i, /^(?:-->)/i, /^(?:--)/i, /^(?::::)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"LINE\": { \"rules\": [9, 10], \"inclusive\": false }, \"struct\": { \"rules\": [9, 10, 22, 26, 32, 39, 40, 41, 42, 51, 52, 53, 54, 68, 69, 70, 71, 72], \"inclusive\": false }, \"FLOATING_NOTE_ID\": { \"rules\": [61], \"inclusive\": false }, \"FLOATING_NOTE\": { \"rules\": [58, 59, 60], \"inclusive\": false }, \"NOTE_TEXT\": { \"rules\": [63, 64], \"inclusive\": false }, \"NOTE_ID\": { \"rules\": [62], \"inclusive\": false }, \"NOTE\": { \"rules\": [55, 56, 57], \"inclusive\": false }, \"CLASS_STYLE\": { \"rules\": [28], \"inclusive\": false }, \"CLASS\": { \"rules\": [27], \"inclusive\": false }, \"CLASSDEFID\": { \"rules\": [25], \"inclusive\": false }, \"CLASSDEF\": { \"rules\": [23, 24], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [20, 21], \"inclusive\": false }, \"acc_descr\": { \"rules\": [18], \"inclusive\": false }, \"acc_title\": { \"rules\": [16], \"inclusive\": false }, \"SCALE\": { \"rules\": [13, 14, 30, 31], \"inclusive\": false }, \"ALIAS\": { \"rules\": [], \"inclusive\": false }, \"STATE_ID\": { \"rules\": [45], \"inclusive\": false }, \"STATE_STRING\": { \"rules\": [46, 47], \"inclusive\": false }, \"FORK_STATE\": { \"rules\": [], \"inclusive\": false }, \"STATE\": { \"rules\": [9, 10, 33, 34, 35, 36, 37, 38, 43, 44, 48, 49, 50], \"inclusive\": false }, \"ID\": { \"rules\": [9, 10], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 15, 17, 19, 22, 26, 29, 32, 50, 54, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst DEFAULT_DIAGRAM_DIRECTION = \"LR\";\nconst DEFAULT_NESTED_DOC_DIR = \"TB\";\nconst STMT_STATE = \"state\";\nconst STMT_RELATION = \"relation\";\nconst STMT_CLASSDEF = \"classDef\";\nconst STMT_APPLYCLASS = \"applyClass\";\nconst DEFAULT_STATE_TYPE = \"default\";\nconst DIVIDER_TYPE = \"divider\";\nconst START_NODE = \"[*]\";\nconst START_TYPE = \"start\";\nconst END_NODE = START_NODE;\nconst END_TYPE = \"end\";\nconst COLOR_KEYWORD = \"color\";\nconst FILL_KEYWORD = \"fill\";\nconst BG_FILL = \"bgFill\";\nconst STYLECLASS_SEP = \",\";\nfunction newClassesList() {\n return {};\n}\nlet direction = DEFAULT_DIAGRAM_DIRECTION;\nlet rootDoc = [];\nlet classes = newClassesList();\nconst newDoc = () => {\n return {\n relations: [],\n states: {},\n documents: {}\n };\n};\nlet documents = {\n root: newDoc()\n};\nlet currentDocument = documents.root;\nlet startEndCount = 0;\nlet dividerCnt = 0;\nconst lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n};\nconst relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3\n};\nconst clone = (o) => JSON.parse(JSON.stringify(o));\nconst setRootDoc = (o) => {\n log.info(\"Setting root doc\", o);\n rootDoc = o;\n};\nconst getRootDoc = () => rootDoc;\nconst docTranslator = (parent, node, first) => {\n if (node.stmt === STMT_RELATION) {\n docTranslator(parent, node.state1, true);\n docTranslator(parent, node.state2, false);\n } else {\n if (node.stmt === STMT_STATE) {\n if (node.id === \"[*]\") {\n node.id = first ? parent.id + \"_start\" : parent.id + \"_end\";\n node.start = first;\n } else {\n node.id = node.id.trim();\n }\n }\n if (node.doc) {\n const doc = [];\n let currentDoc = [];\n let i;\n for (i = 0; i < node.doc.length; i++) {\n if (node.doc[i].type === DIVIDER_TYPE) {\n const newNode = clone(node.doc[i]);\n newNode.doc = clone(currentDoc);\n doc.push(newNode);\n currentDoc = [];\n } else {\n currentDoc.push(node.doc[i]);\n }\n }\n if (doc.length > 0 && currentDoc.length > 0) {\n const newNode = {\n stmt: STMT_STATE,\n id: generateId(),\n type: \"divider\",\n doc: clone(currentDoc)\n };\n doc.push(clone(newNode));\n node.doc = doc;\n }\n node.doc.forEach((docNode) => docTranslator(node, docNode, true));\n }\n }\n};\nconst getRootDocV2 = () => {\n docTranslator({ id: \"root\" }, { id: \"root\", doc: rootDoc }, true);\n return { id: \"root\", doc: rootDoc };\n};\nconst extract = (_doc) => {\n let doc;\n if (_doc.doc) {\n doc = _doc.doc;\n } else {\n doc = _doc;\n }\n log.info(doc);\n clear(true);\n log.info(\"Extract\", doc);\n doc.forEach((item) => {\n switch (item.stmt) {\n case STMT_STATE:\n addState(\n item.id.trim(),\n item.type,\n item.doc,\n item.description,\n item.note,\n item.classes,\n item.styles,\n item.textStyles\n );\n break;\n case STMT_RELATION:\n addRelation(item.state1, item.state2, item.description);\n break;\n case STMT_CLASSDEF:\n addStyleClass(item.id.trim(), item.classes);\n break;\n case STMT_APPLYCLASS:\n setCssClass(item.id.trim(), item.styleClass);\n break;\n }\n });\n};\nconst addState = function(id, type = DEFAULT_STATE_TYPE, doc = null, descr = null, note = null, classes2 = null, styles2 = null, textStyles = null) {\n const trimmedId = id == null ? void 0 : id.trim();\n if (currentDocument.states[trimmedId] === void 0) {\n log.info(\"Adding state \", trimmedId, descr);\n currentDocument.states[trimmedId] = {\n id: trimmedId,\n descriptions: [],\n type,\n doc,\n note,\n classes: [],\n styles: [],\n textStyles: []\n };\n } else {\n if (!currentDocument.states[trimmedId].doc) {\n currentDocument.states[trimmedId].doc = doc;\n }\n if (!currentDocument.states[trimmedId].type) {\n currentDocument.states[trimmedId].type = type;\n }\n }\n if (descr) {\n log.info(\"Setting state description\", trimmedId, descr);\n if (typeof descr === \"string\") {\n addDescription(trimmedId, descr.trim());\n }\n if (typeof descr === \"object\") {\n descr.forEach((des) => addDescription(trimmedId, des.trim()));\n }\n }\n if (note) {\n currentDocument.states[trimmedId].note = note;\n currentDocument.states[trimmedId].note.text = common.sanitizeText(\n currentDocument.states[trimmedId].note.text,\n getConfig()\n );\n }\n if (classes2) {\n log.info(\"Setting state classes\", trimmedId, classes2);\n const classesList = typeof classes2 === \"string\" ? [classes2] : classes2;\n classesList.forEach((klass) => setCssClass(trimmedId, klass.trim()));\n }\n if (styles2) {\n log.info(\"Setting state styles\", trimmedId, styles2);\n const stylesList = typeof styles2 === \"string\" ? [styles2] : styles2;\n stylesList.forEach((style) => setStyle(trimmedId, style.trim()));\n }\n if (textStyles) {\n log.info(\"Setting state styles\", trimmedId, styles2);\n const textStylesList = typeof textStyles === \"string\" ? [textStyles] : textStyles;\n textStylesList.forEach((textStyle) => setTextStyle(trimmedId, textStyle.trim()));\n }\n};\nconst clear = function(saveCommon) {\n documents = {\n root: newDoc()\n };\n currentDocument = documents.root;\n startEndCount = 0;\n classes = newClassesList();\n if (!saveCommon) {\n clear$1();\n }\n};\nconst getState = function(id) {\n return currentDocument.states[id];\n};\nconst getStates = function() {\n return currentDocument.states;\n};\nconst logDocuments = function() {\n log.info(\"Documents = \", documents);\n};\nconst getRelations = function() {\n return currentDocument.relations;\n};\nfunction startIdIfNeeded(id = \"\") {\n let fixedId = id;\n if (id === START_NODE) {\n startEndCount++;\n fixedId = `${START_TYPE}${startEndCount}`;\n }\n return fixedId;\n}\nfunction startTypeIfNeeded(id = \"\", type = DEFAULT_STATE_TYPE) {\n return id === START_NODE ? START_TYPE : type;\n}\nfunction endIdIfNeeded(id = \"\") {\n let fixedId = id;\n if (id === END_NODE) {\n startEndCount++;\n fixedId = `${END_TYPE}${startEndCount}`;\n }\n return fixedId;\n}\nfunction endTypeIfNeeded(id = \"\", type = DEFAULT_STATE_TYPE) {\n return id === END_NODE ? END_TYPE : type;\n}\nfunction addRelationObjs(item1, item2, relationTitle) {\n let id1 = startIdIfNeeded(item1.id.trim());\n let type1 = startTypeIfNeeded(item1.id.trim(), item1.type);\n let id2 = startIdIfNeeded(item2.id.trim());\n let type2 = startTypeIfNeeded(item2.id.trim(), item2.type);\n addState(\n id1,\n type1,\n item1.doc,\n item1.description,\n item1.note,\n item1.classes,\n item1.styles,\n item1.textStyles\n );\n addState(\n id2,\n type2,\n item2.doc,\n item2.description,\n item2.note,\n item2.classes,\n item2.styles,\n item2.textStyles\n );\n currentDocument.relations.push({\n id1,\n id2,\n relationTitle: common.sanitizeText(relationTitle, getConfig())\n });\n}\nconst addRelation = function(item1, item2, title) {\n if (typeof item1 === \"object\") {\n addRelationObjs(item1, item2, title);\n } else {\n const id1 = startIdIfNeeded(item1.trim());\n const type1 = startTypeIfNeeded(item1);\n const id2 = endIdIfNeeded(item2.trim());\n const type2 = endTypeIfNeeded(item2);\n addState(id1, type1);\n addState(id2, type2);\n currentDocument.relations.push({\n id1,\n id2,\n title: common.sanitizeText(title, getConfig())\n });\n }\n};\nconst addDescription = function(id, descr) {\n const theState = currentDocument.states[id];\n const _descr = descr.startsWith(\":\") ? descr.replace(\":\", \"\").trim() : descr;\n theState.descriptions.push(common.sanitizeText(_descr, getConfig()));\n};\nconst cleanupLabel = function(label) {\n if (label.substring(0, 1) === \":\") {\n return label.substr(2).trim();\n } else {\n return label.trim();\n }\n};\nconst getDividerId = () => {\n dividerCnt++;\n return \"divider-id-\" + dividerCnt;\n};\nconst addStyleClass = function(id, styleAttributes = \"\") {\n if (classes[id] === void 0) {\n classes[id] = { id, styles: [], textStyles: [] };\n }\n const foundClass = classes[id];\n if (styleAttributes !== void 0 && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, \"$1\").trim();\n if (attrib.match(COLOR_KEYWORD)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n};\nconst getClasses = function() {\n return classes;\n};\nconst setCssClass = function(itemIds, cssClassName) {\n itemIds.split(\",\").forEach(function(id) {\n let foundState = getState(id);\n if (foundState === void 0) {\n const trimmedId = id.trim();\n addState(trimmedId);\n foundState = getState(trimmedId);\n }\n foundState.classes.push(cssClassName);\n });\n};\nconst setStyle = function(itemId, styleText) {\n const item = getState(itemId);\n if (item !== void 0) {\n item.textStyles.push(styleText);\n }\n};\nconst setTextStyle = function(itemId, cssClassName) {\n const item = getState(itemId);\n if (item !== void 0) {\n item.textStyles.push(cssClassName);\n }\n};\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\nconst trimColon = (str) => str && str[0] === \":\" ? str.substr(1).trim() : str.trim();\nconst db = {\n getConfig: () => getConfig().state,\n addState,\n clear,\n getState,\n getStates,\n getRelations,\n getClasses,\n getDirection,\n addRelation,\n getDividerId,\n setDirection,\n cleanupLabel,\n lineType,\n relationType,\n logDocuments,\n getRootDoc,\n setRootDoc,\n getRootDocV2,\n extract,\n trimColon,\n getAccTitle,\n setAccTitle,\n getAccDescription,\n setAccDescription,\n addStyleClass,\n setCssClass,\n addDescription,\n setDiagramTitle,\n getDiagramTitle\n};\nconst getStyles = (options) => `\ndefs #statediagram-barbEnd {\n fill: ${options.transitionColor};\n stroke: ${options.transitionColor};\n }\ng.stateGroup text {\n fill: ${options.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${options.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${options.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${options.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${options.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n\n text {\n fill: ${options.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${options.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${options.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${options.innerEndBackground};\n stroke: ${options.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${options.compositeBackground || options.background};\n // stroke: ${options.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${options.stateBkg || options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${options.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${options.compositeTitleBackground};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${options.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${options.stateBorder || options.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${options.compositeBackground || options.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${options.altBackground ? options.altBackground : \"#efefef\"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${options.altBackground ? options.altBackground : \"#efefef\"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${options.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${options.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${options.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n`;\nconst styles = getStyles;\nexport {\n DEFAULT_STATE_TYPE as D,\n STMT_RELATION as S,\n DIVIDER_TYPE as a,\n STMT_STATE as b,\n DEFAULT_NESTED_DOC_DIR as c,\n db as d,\n parser$1 as p,\n styles as s\n};\n"], + "mappings": "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", + "names": ["parser", "o", "k", "v", "o2", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "parser2", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "stateStmt", "relDescription", "id", "description", "parts", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "TERROR", "EOF", "args", "lexer2", "sharedState", "yyloc", "ranges", "lex", "token", "symbol", "state", "action", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "n", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "Parser", "parser$1", "DEFAULT_DIAGRAM_DIRECTION", "DEFAULT_NESTED_DOC_DIR", "STMT_STATE", "STMT_RELATION", "STMT_CLASSDEF", "STMT_APPLYCLASS", "DEFAULT_STATE_TYPE", "DIVIDER_TYPE", "START_NODE", "START_TYPE", "END_NODE", "END_TYPE", "COLOR_KEYWORD", "FILL_KEYWORD", "BG_FILL", "STYLECLASS_SEP", "newClassesList", "direction", "rootDoc", "classes", "newDoc", "documents", "currentDocument", "startEndCount", "dividerCnt", "lineType", "relationType", "clone", "setRootDoc", "log$1", "getRootDoc", "docTranslator", "parent", "node", "first", "doc", "currentDoc", "newNode", "generateId", "docNode", "getRootDocV2", "extract", "_doc", "clear", "item", "addState", "addRelation", "addStyleClass", "setCssClass", "type", "descr", "note", "classes2", "styles2", "textStyles", "trimmedId", "addDescription", "des", "common$1", "getConfig$1", "klass", "style", "setStyle", "textStyle", "setTextStyle", "saveCommon", "getState", "getStates", "logDocuments", "getRelations", "startIdIfNeeded", "fixedId", "startTypeIfNeeded", "endIdIfNeeded", "endTypeIfNeeded", "addRelationObjs", "item1", "item2", "relationTitle", "id1", "type1", "id2", "type2", "title", "theState", "_descr", "cleanupLabel", "label", "getDividerId", "styleAttributes", "foundClass", "attrib", "fixedAttrib", "newStyle2", "getClasses", "itemIds", "cssClassName", "foundState", "itemId", "styleText", "getDirection", "setDirection", "dir", "trimColon", "db", "getAccTitle", "setAccTitle", "getAccDescription", "setAccDescription", "setDiagramTitle", "getDiagramTitle", "getStyles", "options", "styles"] +} diff --git a/public/chunk-LLUSN4ZV.min.js b/public/chunk-LLUSN4ZV.min.js new file mode 100644 index 0000000..ca7f9c7 --- /dev/null +++ b/public/chunk-LLUSN4ZV.min.js @@ -0,0 +1,15 @@ +import{$ as Br,Aa as hr,Ba as Ur,Ca as jr,Da as B,Ea as Wr,O as ze,P as k,Q as Pr,R as D,S as Rr,T as Mr,U as Ke,V as Ve,W as H,X as He,Y as Fr,Z as Xe,_ as _e,aa as Ze,ba as $e,ca as Je,da as Qe,ea as F,fa as Dr,ga as _,ha as rt,ia as G,ja as et,ka as Tr,ma as mr,na as pr,oa as tt,pa as lr,qa as X,ra as Gr,sa as ot,ta as U,ua as j,va as nt,wa as P,xa as at,ya as cr,za as nr}from"./chunk-DJFTDYIK.min.js";var Vn="[object Symbol]";function Hn(r){return typeof r=="symbol"||F(r)&&Pr(r)==Vn}var N=Hn;function Xn(r,e){for(var t=-1,o=r==null?0:r.length,n=Array(o);++t-1}var bt=ha;function xa(r){return G(r)?ot(r):Ur(r)}var E=xa;var _a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,va=/^\w*$/;function ga(r,e){if(_(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||N(r)?!0:va.test(r)||!_a.test(r)||e!=null&&r in Object(e)}var _r=ga;var ba=500;function ya(r){var e=Ve(r,function(o){return t.size===ba&&t.clear(),o}),t=e.cache;return e}var yt=ya;var wa=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ea=/\\(\\)?/g,Ia=yt(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(wa,function(t,o,n,a){e.push(n?a.replace(Ea,"$1"):o||t)}),e}),wt=Ia;function Aa(r){return r==null?"":ut(r)}var zr=Aa;function Ta(r,e){return _(r)?r:_r(r,e)?[r]:wt(zr(r))}var Z=Ta;var Oa=1/0;function Sa(r){if(typeof r=="string"||N(r))return r;var e=r+"";return e=="0"&&1/r==-Oa?"-0":e}var q=Sa;function La(r,e){e=Z(e,r);for(var t=0,o=e.length;r!=null&&t0&&t(f)?e>1?Tt(f,e-1,t,o,n):vr(n,f):o||(n[n.length]=f)}return n}var gr=Tt;function Pa(r){var e=r==null?0:r.length;return e?gr(r,1):[]}var R=Pa;function Ra(r){return at(nt(r,void 0,R),r+"")}var Ot=Ra;var Ma="\\ud800-\\udfff",Fa="\\u0300-\\u036f",Ba="\\ufe20-\\ufe2f",Da="\\u20d0-\\u20ff",Ga=Fa+Ba+Da,Ua="\\ufe0e\\ufe0f",ja="\\u200d",Wa=RegExp("["+ja+Ma+Ga+Ua+"]");function qa(r){return Wa.test(r)}var St=qa;function Ya(r,e,t,o){var n=-1,a=r==null?0:r.length;for(o&&a&&(t=r[++n]);++nf))return!1;var u=a.get(r),m=a.get(e);if(u&&m)return u==e&&m==r;var p=-1,l=!0,x=t&Ef?new Qr:void 0;for(a.set(r,e),a.set(e,r);++p2?e[2]:void 0;for(n&&nr(e[0],e[1],n)&&(o=1);++t-1?n[a?e[i]:i]:void 0}}var wo=Es;var Is=Math.max;function As(r,e,t){var o=r==null?0:r.length;if(!o)return-1;var n=t==null?0:ht(t);return n<0&&(n=Is(o+n,0)),Yr(r,O(e,3),n)}var Eo=As;var Ts=wo(Eo),Ir=Ts;function Os(r,e){var t=-1,o=G(r)?Array(r.length):[];return J(r,function(n,a,i){o[++t]=e(n,a,i)}),o}var de=Os;function Ss(r,e){var t=_(r)?W:de;return t(r,O(e,3))}var g=Ss;function Ls(r,e){return r==null?r:Fr(r,Er(e),U)}var ye=Ls;function Ns(r,e){return r&&wr(r,Er(e))}var we=Ns;function Cs(r,e){return r>e}var Io=Cs;var ks=Object.prototype,Ps=ks.hasOwnProperty;function Rs(r,e){return r!=null&&Ps.call(r,e)}var Ao=Rs;function Ms(r,e){return r!=null&&ie(r,e,Ao)}var c=Ms;var Fs="[object String]";function Bs(r){return typeof r=="string"||!_(r)&&F(r)&&Pr(r)==Fs}var To=Bs;function Ds(r,e){return W(e,function(t){return r[t]})}var Oo=Ds;function Gs(r){return r==null?[]:Oo(r,E(r))}var C=Gs;function Us(r){return r===void 0}var I=Us;function js(r,e){return re||a&&i&&s&&!f&&!u||o&&i&&s||!t&&s||!n)return 1;if(!o&&!a&&!u&&r=f)return s;var u=t[o];return s*(u=="desc"?-1:1)}}return r.index-e.index}var ko=$s;function Js(r,e,t){e.length?e=W(e,function(a){return _(a)?function(i){return $(i,a.length===1?a[0]:a)}:a}):e=[j];var o=-1;e=W(e,mr(O));var n=de(r,function(a,i,f){var s=W(e,function(u){return u(a)});return{criteria:s,index:++o,value:a}});return No(n,function(a,i){return ko(a,i,t)})}var Po=Js;var Qs=se("length"),Ro=Qs;var Fo="\\ud800-\\udfff",ru="\\u0300-\\u036f",eu="\\ufe20-\\ufe2f",tu="\\u20d0-\\u20ff",ou=ru+eu+tu,nu="\\ufe0e\\ufe0f",au="["+Fo+"]",Ee="["+ou+"]",Ie="\\ud83c[\\udffb-\\udfff]",iu="(?:"+Ee+"|"+Ie+")",Bo="[^"+Fo+"]",Do="(?:\\ud83c[\\udde6-\\uddff]){2}",Go="[\\ud800-\\udbff][\\udc00-\\udfff]",fu="\\u200d",Uo=iu+"?",jo="["+nu+"]?",su="(?:"+fu+"(?:"+[Bo,Do,Go].join("|")+")"+jo+Uo+")*",uu=jo+Uo+su,du="(?:"+[Bo+Ee+"?",Ee,Do,Go,au].join("|")+")",Mo=RegExp(Ie+"(?="+Ie+")|"+du+uu,"g");function mu(r){for(var e=Mo.lastIndex=0;Mo.test(r);)++e;return e}var Wo=mu;function pu(r){return St(r)?Wo(r):Ro(r)}var qo=pu;function lu(r,e){return Lo(r,e,function(t,o){return fe(r,o)})}var Yo=lu;var cu=Ot(function(r,e){return r==null?{}:Yo(r,e)}),fr=cu;var hu=Math.ceil,xu=Math.max;function _u(r,e,t,o){for(var n=-1,a=xu(hu((e-r)/(t||1)),0),i=Array(a);a--;)i[o?a:++n]=r,r+=t;return i}var zo=_u;function vu(r){return function(e,t,o){return o&&typeof o!="number"&&nr(e,t,o)&&(t=o=void 0),e=xr(e),t===void 0?(t=e,e=0):t=xr(t),o=o===void 0?e1&&nr(r,e[0],e[1])?e=[]:t>2&&nr(e[0],e[1],e[2])&&(e=[e[0]]),Po(r,gr(e,1),[])}),z=Au;var Tu=1/0,Ou=jr&&1/yr(new jr([,-0]))[1]==Tu?function(r){return new jr(r)}:xt,Ho=Ou;var Su=200;function Lu(r,e,t){var o=-1,n=bt,a=r.length,i=!0,f=[],s=f;if(t)i=!1,n=bo;else if(a>=Su){var u=e?null:Ho(r);if(u)return yr(u);i=!1,n=re,s=new Qr}else s=e?[]:f;r:for(;++o1?n.setNode(a,t):n.setNode(a)}),this}setNode(e,t){return c(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=ur,this._children[e]={},this._children[ur][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return c(this._nodes,e)}removeNode(e){var t=this;if(c(this._nodes,e)){var o=function(n){t.removeEdge(t._edgeObjs[n])};delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],d(this.children(e),function(n){t.setParent(n)}),delete this._children[e]),d(E(this._in[e]),o),delete this._in[e],delete this._preds[e],d(E(this._out[e]),o),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,t){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(I(t))t=ur;else{t+="";for(var o=t;!I(o);o=this.parent(o))if(o===e)throw new Error("Setting "+t+" as parent of "+e+" would create a cycle");this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var t=this._parent[e];if(t!==ur)return t}}children(e){if(I(e)&&(e=ur),this._isCompound){var t=this._children[e];if(t)return E(t)}else{if(e===ur)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var t=this._preds[e];if(t)return E(t)}successors(e){var t=this._sucs[e];if(t)return E(t)}neighbors(e){var t=this.predecessors(e);if(t)return Te(t,this.successors(e))}isLeaf(e){var t;return this.isDirected()?t=this.successors(e):t=this.neighbors(e),t.length===0}filterNodes(e){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var o=this;d(this._nodes,function(i,f){e(f)&&t.setNode(f,i)}),d(this._edgeObjs,function(i){t.hasNode(i.v)&&t.hasNode(i.w)&&t.setEdge(i,o.edge(i))});var n={};function a(i){var f=o.parent(i);return f===void 0||t.hasNode(f)?(n[i]=f,f):f in n?n[f]:a(f)}return this._isCompound&&d(t.nodes(),function(i){t.setParent(i,a(i))}),t}setDefaultEdgeLabel(e){return Rr(e)||(e=P(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return C(this._edgeObjs)}setPath(e,t){var o=this,n=arguments;return Y(e,function(a,i){return n.length>1?o.setEdge(a,i,t):o.setEdge(a,i),i}),this}setEdge(){var e,t,o,n,a=!1,i=arguments[0];typeof i=="object"&&i!==null&&"v"in i?(e=i.v,t=i.w,o=i.name,arguments.length===2&&(n=arguments[1],a=!0)):(e=i,t=arguments[1],o=arguments[3],arguments.length>2&&(n=arguments[2],a=!0)),e=""+e,t=""+t,I(o)||(o=""+o);var f=Sr(this._isDirected,e,t,o);if(c(this._edgeLabels,f))return a&&(this._edgeLabels[f]=n),this;if(!I(o)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(t),this._edgeLabels[f]=a?n:this._defaultEdgeLabelFn(e,t,o);var s=Fu(this._isDirected,e,t,o);return e=s.v,t=s.w,Object.freeze(s),this._edgeObjs[f]=s,Jo(this._preds[t],e),Jo(this._sucs[e],t),this._in[t][f]=s,this._out[e][f]=s,this._edgeCount++,this}edge(e,t,o){var n=arguments.length===1?Oe(this._isDirected,arguments[0]):Sr(this._isDirected,e,t,o);return this._edgeLabels[n]}hasEdge(e,t,o){var n=arguments.length===1?Oe(this._isDirected,arguments[0]):Sr(this._isDirected,e,t,o);return c(this._edgeLabels,n)}removeEdge(e,t,o){var n=arguments.length===1?Oe(this._isDirected,arguments[0]):Sr(this._isDirected,e,t,o),a=this._edgeObjs[n];return a&&(e=a.v,t=a.w,delete this._edgeLabels[n],delete this._edgeObjs[n],Qo(this._preds[t],e),Qo(this._sucs[e],t),delete this._in[t][n],delete this._out[e][n],this._edgeCount--),this}inEdges(e,t){var o=this._in[e];if(o){var n=C(o);return t?S(n,function(a){return a.v===t}):n}}outEdges(e,t){var o=this._out[e];if(o){var n=C(o);return t?S(n,function(a){return a.w===t}):n}}nodeEdges(e,t){var o=this.inEdges(e,t);if(o)return o.concat(this.outEdges(e,t))}};A.prototype._nodeCount=0;A.prototype._edgeCount=0;function Jo(r,e){r[e]?r[e]++:r[e]=1}function Qo(r,e){--r[e]||delete r[e]}function Sr(r,e,t,o){var n=""+e,a=""+t;if(!r&&n>a){var i=n;n=a,a=i}return n+$o+a+$o+(I(o)?Mu:o)}function Fu(r,e,t,o){var n=""+e,a=""+t;if(!r&&n>a){var i=n;n=a,a=i}var f={v:n,w:a};return o&&(f.name=o),f}function Oe(r,e){return Sr(r,e.v,e.w,e.name)}function K(r,e,t,o){var n;do n=sr(o);while(r.hasNode(n));return t.dummy=e,r.setNode(n,t),n}function rn(r){var e=new A().setGraph(r.graph());return d(r.nodes(),function(t){e.setNode(t,r.node(t))}),d(r.edges(),function(t){var o=e.edge(t.v,t.w)||{weight:0,minlen:1},n=r.edge(t);e.setEdge(t.v,t.w,{weight:o.weight+n.weight,minlen:Math.max(o.minlen,n.minlen)})}),e}function le(r){var e=new A({multigraph:r.isMultigraph()}).setGraph(r.graph());return d(r.nodes(),function(t){r.children(t).length||e.setNode(t,r.node(t))}),d(r.edges(),function(t){e.setEdge(t,r.edge(t))}),e}function Se(r,e){var t=r.x,o=r.y,n=e.x-t,a=e.y-o,i=r.width/2,f=r.height/2;if(!n&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var s,u;return Math.abs(a)*i>Math.abs(n)*f?(a<0&&(f=-f),s=f*n/a,u=f):(n<0&&(i=-i),s=i,u=i*a/n),{x:t+s,y:o+u}}function rr(r){var e=g(M(Ne(r)+1),function(){return[]});return d(r.nodes(),function(t){var o=r.node(t),n=o.rank;I(n)||(e[n][o.order]=t)}),e}function en(r){var e=V(g(r.nodes(),function(t){return r.node(t).rank}));d(r.nodes(),function(t){var o=r.node(t);c(o,"rank")&&(o.rank-=e)})}function tn(r){var e=V(g(r.nodes(),function(a){return r.node(a).rank})),t=[];d(r.nodes(),function(a){var i=r.node(a).rank-e;t[i]||(t[i]=[]),t[i].push(a)});var o=0,n=r.graph().nodeRankFactor;d(t,function(a,i){I(a)&&i%n!==0?--o:o&&d(a,function(f){r.node(f).rank+=o})})}function Le(r,e,t,o){var n={width:0,height:0};return arguments.length>=4&&(n.rank=t,n.order=o),K(r,"border",n,e)}function Ne(r){return L(g(r.nodes(),function(e){var t=r.node(e).rank;if(!I(t))return t}))}function on(r,e){var t={lhs:[],rhs:[]};return d(r,function(o){e(o)?t.lhs.push(o):t.rhs.push(o)}),t}function nn(r,e){var t=ue();try{return e()}finally{console.log(r+" time: "+(ue()-t)+"ms")}}function an(r,e){return e()}function sn(r){function e(t){var o=r.children(t),n=r.node(t);if(o.length&&d(o,e),c(n,"minRank")){n.borderLeft=[],n.borderRight=[];for(var a=n.minRank,i=n.maxRank+1;a0;--f)if(i=e[f].dequeue(),i){o=o.concat(Pe(r,e,t,i,!0));break}}}return o}function Pe(r,e,t,o,n){var a=n?[]:void 0;return d(r.inEdges(o.v),function(i){var f=r.edge(i),s=r.node(i.v);n&&a.push({v:i.v,w:i.w}),s.out-=f,Re(e,t,s)}),d(r.outEdges(o.v),function(i){var f=r.edge(i),s=i.w,u=r.node(s);u.in-=f,Re(e,t,u)}),r.removeNode(o.v),a}function qu(r,e){var t=new A,o=0,n=0;d(r.nodes(),function(f){t.setNode(f,{v:f,in:0,out:0})}),d(r.edges(),function(f){var s=t.edge(f.v,f.w)||0,u=e(f),m=s+u;t.setEdge(f.v,f.w,m),n=Math.max(n,t.node(f.v).out+=u),o=Math.max(o,t.node(f.w).in+=u)});var a=M(n+o+3).map(function(){return new ce}),i=o+1;return d(t.nodes(),function(f){Re(a,i,t.node(f))}),{graph:t,buckets:a,zeroIdx:i}}function Re(r,e,t){t.out?t.in?r[t.out-t.in+e].enqueue(t):r[r.length-1].enqueue(t):r[0].enqueue(t)}function hn(r){var e=r.graph().acyclicer==="greedy"?cn(r,t(r)):Yu(r);d(e,function(o){var n=r.edge(o);r.removeEdge(o),n.forwardName=o.name,n.reversed=!0,r.setEdge(o.w,o.v,n,sr("rev"))});function t(o){return function(n){return o.edge(n).weight}}}function Yu(r){var e=[],t={},o={};function n(a){c(o,a)||(o[a]=!0,t[a]=!0,d(r.outEdges(a),function(i){c(t,i.w)?e.push(i):n(i.w)}),delete t[a])}return d(r.nodes(),n),e}function xn(r){d(r.edges(),function(e){var t=r.edge(e);if(t.reversed){r.removeEdge(e);var o=t.forwardName;delete t.reversed,delete t.forwardName,r.setEdge(e.w,e.v,t,o)}})}function vn(r){r.graph().dummyChains=[],d(r.edges(),function(e){zu(r,e)})}function zu(r,e){var t=e.v,o=r.node(t).rank,n=e.w,a=r.node(n).rank,i=e.name,f=r.edge(e),s=f.labelRank;if(a!==o+1){r.removeEdge(e);var u,m,p;for(p=0,++o;oi.lim&&(f=i,s=!0);var u=S(e.edges(),function(m){return s===wn(r,r.node(m.v),f)&&s!==wn(r,r.node(m.w),f)});return ir(u,function(m){return dr(e,m)})}function On(r,e,t,o){var n=t.v,a=t.w;r.removeEdge(n,a),r.setEdge(o.v,o.w,{}),Ge(r),De(r,e),rd(r,e)}function rd(r,e){var t=Ir(r.nodes(),function(n){return!e.node(n).parent}),o=Be(r,t);o=o.slice(1),d(o,function(n){var a=r.node(n).parent,i=e.edge(n,a),f=!1;i||(i=e.edge(a,n),f=!0),e.node(n).rank=e.node(a).rank+(f?i.minlen:-i.minlen)})}function ed(r,e,t){return r.hasEdge(e,t)}function wn(r,e,t){return t.low<=e.lim&&e.lim<=t.lim}function Ue(r){switch(r.graph().ranker){case"network-simplex":Sn(r);break;case"tight-tree":od(r);break;case"longest-path":td(r);break;default:Sn(r)}}var td=Lr;function od(r){Lr(r),he(r)}function Sn(r){tr(r)}function Ln(r){var e=K(r,"root",{},"_root"),t=nd(r),o=L(C(t))-1,n=2*o+1;r.graph().nestingRoot=e,d(r.edges(),function(i){r.edge(i).minlen*=n});var a=ad(r)+1;d(r.children(),function(i){Nn(r,e,n,a,o,t,i)}),r.graph().nodeRankFactor=n}function Nn(r,e,t,o,n,a,i){var f=r.children(i);if(!f.length){i!==e&&r.setEdge(e,i,{weight:0,minlen:t});return}var s=Le(r,"_bt"),u=Le(r,"_bb"),m=r.node(i);r.setParent(s,i),m.borderTop=s,r.setParent(u,i),m.borderBottom=u,d(f,function(p){Nn(r,e,t,o,n,a,p);var l=r.node(p),x=l.borderTop?l.borderTop:p,h=l.borderBottom?l.borderBottom:p,v=l.borderTop?o:2*o,w=x!==h?1:n-a[i]+1;r.setEdge(s,x,{weight:v,minlen:w,nestingEdge:!0}),r.setEdge(h,u,{weight:v,minlen:w,nestingEdge:!0})}),r.parent(i)||r.setEdge(e,s,{weight:0,minlen:n+a[i]})}function nd(r){var e={};function t(o,n){var a=r.children(o);a&&a.length&&d(a,function(i){t(i,n+1)}),e[o]=n}return d(r.children(),function(o){t(o,1)}),e}function ad(r){return Y(r.edges(),function(e,t){return e+r.edge(t).weight},0)}function Cn(r){var e=r.graph();r.removeNode(e.nestingRoot),delete e.nestingRoot,d(r.edges(),function(t){var o=r.edge(t);o.nestingEdge&&r.removeEdge(t)})}function kn(r,e,t){var o={},n;d(t,function(a){for(var i=r.parent(a),f,s;i;){if(f=r.parent(i),f?(s=o[f],o[f]=i):(s=n,n=i),s&&s!==i){e.setEdge(s,i);return}i=f}})}function Pn(r,e,t){var o=fd(r),n=new A({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(function(a){return r.node(a)});return d(r.nodes(),function(a){var i=r.node(a),f=r.parent(a);(i.rank===e||i.minRank<=e&&e<=i.maxRank)&&(n.setNode(a),n.setParent(a,f||o),d(r[t](a),function(s){var u=s.v===a?s.w:s.v,m=n.edge(u,a),p=I(m)?0:m.weight;n.setEdge(u,a,{weight:r.edge(s).weight+p})}),c(i,"minRank")&&n.setNode(a,{borderLeft:i.borderLeft[e],borderRight:i.borderRight[e]}))}),n}function fd(r){for(var e;r.hasNode(e=sr("_root")););return e}function Rn(r,e){for(var t=0,o=1;o0;)m%2&&(p+=f[m+1]),m=m-1>>1,f[m]+=u.weight;s+=u.weight*p})),s}function Mn(r){var e={},t=S(r.nodes(),function(f){return!r.children(f).length}),o=L(g(t,function(f){return r.node(f).rank})),n=g(M(o+1),function(){return[]});function a(f){if(!c(e,f)){e[f]=!0;var s=r.node(f);n[s.rank].push(f),d(r.successors(f),a)}}var i=z(t,function(f){return r.node(f).rank});return d(i,a),n}function Fn(r,e){return g(e,function(t){var o=r.inEdges(t);if(o.length){var n=Y(o,function(a,i){var f=r.edge(i),s=r.node(i.v);return{sum:a.sum+f.weight*s.order,weight:a.weight+f.weight}},{sum:0,weight:0});return{v:t,barycenter:n.sum/n.weight,weight:n.weight}}else return{v:t}})}function Bn(r,e){var t={};d(r,function(n,a){var i=t[n.v]={indegree:0,in:[],out:[],vs:[n.v],i:a};I(n.barycenter)||(i.barycenter=n.barycenter,i.weight=n.weight)}),d(e.edges(),function(n){var a=t[n.v],i=t[n.w];!I(a)&&!I(i)&&(i.indegree++,a.out.push(t[n.w]))});var o=S(t,function(n){return!n.indegree});return ud(o)}function ud(r){var e=[];function t(a){return function(i){i.merged||(I(i.barycenter)||I(a.barycenter)||i.barycenter>=a.barycenter)&&dd(a,i)}}function o(a){return function(i){i.in.push(a),--i.indegree===0&&r.push(i)}}for(;r.length;){var n=r.pop();e.push(n),d(n.in.reverse(),t(n)),d(n.out,o(n))}return g(S(e,function(a){return!a.merged}),function(a){return fr(a,["vs","i","barycenter","weight"])})}function dd(r,e){var t=0,o=0;r.weight&&(t+=r.barycenter*r.weight,o+=r.weight),e.weight&&(t+=e.barycenter*e.weight,o+=e.weight),r.vs=e.vs.concat(r.vs),r.barycenter=t/o,r.weight=o,r.i=Math.min(e.i,r.i),e.merged=!0}function Gn(r,e){var t=on(r,function(m){return c(m,"barycenter")}),o=t.lhs,n=z(t.rhs,function(m){return-m.i}),a=[],i=0,f=0,s=0;o.sort(md(!!e)),s=Dn(a,n,s),d(o,function(m){s+=m.vs.length,a.push(m.vs),i+=m.barycenter*m.weight,f+=m.weight,s=Dn(a,n,s)});var u={vs:R(a)};return f&&(u.barycenter=i/f,u.weight=f),u}function Dn(r,e,t){for(var o;e.length&&(o=Q(e)).i<=t;)e.pop(),r.push(o.vs),t++;return t}function md(r){return function(e,t){return e.barycentert.barycenter?1:r?t.i-e.i:e.i-t.i}}function je(r,e,t,o){var n=r.children(e),a=r.node(e),i=a?a.borderLeft:void 0,f=a?a.borderRight:void 0,s={};i&&(n=S(n,function(h){return h!==i&&h!==f}));var u=Fn(r,n);d(u,function(h){if(r.children(h.v).length){var v=je(r,h.v,t,o);s[h.v]=v,c(v,"barycenter")&&ld(h,v)}});var m=Bn(u,t);pd(m,s);var p=Gn(m,o);if(i&&(p.vs=R([i,p.vs,f]),r.predecessors(i).length)){var l=r.node(r.predecessors(i)[0]),x=r.node(r.predecessors(f)[0]);c(p,"barycenter")||(p.barycenter=0,p.weight=0),p.barycenter=(p.barycenter*p.weight+l.order+x.order)/(p.weight+2),p.weight+=2}return p}function pd(r,e){d(r,function(t){t.vs=R(t.vs.map(function(o){return e[o]?e[o].vs:o}))})}function ld(r,e){I(r.barycenter)?(r.barycenter=e.barycenter,r.weight=e.weight):(r.barycenter=(r.barycenter*r.weight+e.barycenter*e.weight)/(r.weight+e.weight),r.weight+=e.weight)}function Wn(r){var e=Ne(r),t=Un(r,M(1,e+1),"inEdges"),o=Un(r,M(e-1,-1,-1),"outEdges"),n=Mn(r);jn(r,n);for(var a=Number.POSITIVE_INFINITY,i,f=0,s=0;s<4;++f,++s){cd(f%2?t:o,f%4>=2),n=rr(r);var u=Rn(r,n);ui||f>e[s].lim));for(u=s,s=o;(s=r.parent(s))!==u;)a.push(s);return{path:n.concat(a.reverse()),lca:u}}function xd(r){var e={},t=0;function o(n){var a=t;d(r.children(n),o),e[n]={low:a,lim:t++}}return d(r.children(),o),e}function _d(r,e){var t={};function o(n,a){var i=0,f=0,s=n.length,u=Q(a);return d(a,function(m,p){var l=gd(r,m),x=l?r.node(l).order:s;(l||m===u)&&(d(a.slice(f,p+1),function(h){d(r.predecessors(h),function(v){var w=r.node(v),T=w.order;(Tu)&&Yn(t,l,m)})})}function n(a,i){var f=-1,s,u=0;return d(i,function(m,p){if(r.node(m).dummy==="border"){var l=r.predecessors(m);l.length&&(s=r.node(l[0]).order,o(i,u,p,f,s),u=p,f=s)}o(i,u,i.length,s,a.length)}),i}return Y(e,n),t}function gd(r,e){if(r.node(e).dummy)return Ir(r.predecessors(e),function(t){return r.node(t).dummy})}function Yn(r,e,t){if(e>t){var o=e;e=t,t=o}var n=r[e];n||(r[e]=n={}),n[t]=!0}function bd(r,e,t){if(e>t){var o=e;e=t,t=o}return c(r[e],t)}function yd(r,e,t,o){var n={},a={},i={};return d(e,function(f){d(f,function(s,u){n[s]=s,a[s]=s,i[s]=u})}),d(e,function(f){var s=-1;d(f,function(u){var m=o(u);if(m.length){m=z(m,function(v){return i[v]});for(var p=(m.length-1)/2,l=Math.floor(p),x=Math.ceil(p);l<=x;++l){var h=m[l];a[u]===u&&s + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) +*/ +//# sourceMappingURL=chunk-LLUSN4ZV.min.js.map diff --git a/public/chunk-LLUSN4ZV.min.js.map b/public/chunk-LLUSN4ZV.min.js.map new file mode 100644 index 0000000..3429bac --- /dev/null +++ b/public/chunk-LLUSN4ZV.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/lodash-es/isSymbol.js", "../../node_modules/lodash-es/_arrayMap.js", "../../node_modules/lodash-es/_baseToString.js", "../../node_modules/lodash-es/_trimmedEndIndex.js", "../../node_modules/lodash-es/_baseTrim.js", "../../node_modules/lodash-es/toNumber.js", "../../node_modules/lodash-es/toFinite.js", "../../node_modules/lodash-es/toInteger.js", "../../node_modules/lodash-es/noop.js", "../../node_modules/lodash-es/_arrayEach.js", "../../node_modules/lodash-es/_baseFindIndex.js", "../../node_modules/lodash-es/_baseIsNaN.js", "../../node_modules/lodash-es/_strictIndexOf.js", "../../node_modules/lodash-es/_baseIndexOf.js", "../../node_modules/lodash-es/_arrayIncludes.js", "../../node_modules/lodash-es/keys.js", "../../node_modules/lodash-es/_isKey.js", "../../node_modules/lodash-es/_memoizeCapped.js", "../../node_modules/lodash-es/_stringToPath.js", "../../node_modules/lodash-es/toString.js", "../../node_modules/lodash-es/_castPath.js", "../../node_modules/lodash-es/_toKey.js", "../../node_modules/lodash-es/_baseGet.js", "../../node_modules/lodash-es/get.js", "../../node_modules/lodash-es/_arrayPush.js", "../../node_modules/lodash-es/_isFlattenable.js", "../../node_modules/lodash-es/_baseFlatten.js", "../../node_modules/lodash-es/flatten.js", "../../node_modules/lodash-es/_flatRest.js", "../../node_modules/lodash-es/_hasUnicode.js", "../../node_modules/lodash-es/_arrayReduce.js", "../../node_modules/lodash-es/_baseAssign.js", "../../node_modules/lodash-es/_baseAssignIn.js", "../../node_modules/lodash-es/_arrayFilter.js", "../../node_modules/lodash-es/stubArray.js", "../../node_modules/lodash-es/_getSymbols.js", "../../node_modules/lodash-es/_copySymbols.js", "../../node_modules/lodash-es/_getSymbolsIn.js", "../../node_modules/lodash-es/_copySymbolsIn.js", "../../node_modules/lodash-es/_baseGetAllKeys.js", "../../node_modules/lodash-es/_getAllKeys.js", "../../node_modules/lodash-es/_getAllKeysIn.js", "../../node_modules/lodash-es/_initCloneArray.js", "../../node_modules/lodash-es/_cloneDataView.js", "../../node_modules/lodash-es/_cloneRegExp.js", "../../node_modules/lodash-es/_cloneSymbol.js", "../../node_modules/lodash-es/_initCloneByTag.js", "../../node_modules/lodash-es/_baseIsMap.js", "../../node_modules/lodash-es/isMap.js", "../../node_modules/lodash-es/_baseIsSet.js", "../../node_modules/lodash-es/isSet.js", "../../node_modules/lodash-es/_baseClone.js", "../../node_modules/lodash-es/clone.js", "../../node_modules/lodash-es/cloneDeep.js", "../../node_modules/lodash-es/_setCacheAdd.js", "../../node_modules/lodash-es/_setCacheHas.js", "../../node_modules/lodash-es/_SetCache.js", "../../node_modules/lodash-es/_arraySome.js", "../../node_modules/lodash-es/_cacheHas.js", "../../node_modules/lodash-es/_equalArrays.js", "../../node_modules/lodash-es/_mapToArray.js", "../../node_modules/lodash-es/_setToArray.js", "../../node_modules/lodash-es/_equalByTag.js", "../../node_modules/lodash-es/_equalObjects.js", "../../node_modules/lodash-es/_baseIsEqualDeep.js", "../../node_modules/lodash-es/_baseIsEqual.js", "../../node_modules/lodash-es/_baseIsMatch.js", "../../node_modules/lodash-es/_isStrictComparable.js", "../../node_modules/lodash-es/_getMatchData.js", "../../node_modules/lodash-es/_matchesStrictComparable.js", "../../node_modules/lodash-es/_baseMatches.js", "../../node_modules/lodash-es/_baseHasIn.js", "../../node_modules/lodash-es/_hasPath.js", "../../node_modules/lodash-es/hasIn.js", "../../node_modules/lodash-es/_baseMatchesProperty.js", "../../node_modules/lodash-es/_baseProperty.js", "../../node_modules/lodash-es/_basePropertyDeep.js", "../../node_modules/lodash-es/property.js", "../../node_modules/lodash-es/_baseIteratee.js", "../../node_modules/lodash-es/_baseForOwn.js", "../../node_modules/lodash-es/_createBaseEach.js", "../../node_modules/lodash-es/_baseEach.js", "../../node_modules/lodash-es/now.js", "../../node_modules/lodash-es/defaults.js", "../../node_modules/lodash-es/_arrayIncludesWith.js", "../../node_modules/lodash-es/last.js", "../../node_modules/lodash-es/_castFunction.js", "../../node_modules/lodash-es/forEach.js", "../../node_modules/lodash-es/_baseFilter.js", "../../node_modules/lodash-es/filter.js", "../../node_modules/lodash-es/_createFind.js", "../../node_modules/lodash-es/findIndex.js", "../../node_modules/lodash-es/find.js", "../../node_modules/lodash-es/_baseMap.js", "../../node_modules/lodash-es/map.js", "../../node_modules/lodash-es/forIn.js", "../../node_modules/lodash-es/forOwn.js", "../../node_modules/lodash-es/_baseGt.js", "../../node_modules/lodash-es/_baseHas.js", "../../node_modules/lodash-es/has.js", "../../node_modules/lodash-es/isString.js", "../../node_modules/lodash-es/_baseValues.js", "../../node_modules/lodash-es/values.js", "../../node_modules/lodash-es/isUndefined.js", "../../node_modules/lodash-es/_baseLt.js", "../../node_modules/lodash-es/mapValues.js", "../../node_modules/lodash-es/_baseExtremum.js", "../../node_modules/lodash-es/max.js", "../../node_modules/lodash-es/min.js", "../../node_modules/lodash-es/minBy.js", "../../node_modules/lodash-es/_baseSet.js", "../../node_modules/lodash-es/_basePickBy.js", "../../node_modules/lodash-es/_baseSortBy.js", "../../node_modules/lodash-es/_compareAscending.js", "../../node_modules/lodash-es/_compareMultiple.js", "../../node_modules/lodash-es/_baseOrderBy.js", "../../node_modules/lodash-es/_asciiSize.js", "../../node_modules/lodash-es/_unicodeSize.js", "../../node_modules/lodash-es/_stringSize.js", "../../node_modules/lodash-es/_basePick.js", "../../node_modules/lodash-es/pick.js", "../../node_modules/lodash-es/_baseRange.js", "../../node_modules/lodash-es/_createRange.js", "../../node_modules/lodash-es/range.js", "../../node_modules/lodash-es/_baseReduce.js", "../../node_modules/lodash-es/reduce.js", "../../node_modules/lodash-es/size.js", "../../node_modules/lodash-es/sortBy.js", "../../node_modules/lodash-es/_createSet.js", "../../node_modules/lodash-es/_baseUniq.js", "../../node_modules/lodash-es/union.js", "../../node_modules/lodash-es/uniqueId.js", "../../node_modules/lodash-es/_baseZipObject.js", "../../node_modules/lodash-es/zipObject.js", "../../node_modules/dagre-d3-es/src/graphlib/graph.js", "../../node_modules/dagre-d3-es/src/dagre/util.js", "../../node_modules/dagre-d3-es/src/dagre/add-border-segments.js", "../../node_modules/dagre-d3-es/src/dagre/coordinate-system.js", "../../node_modules/dagre-d3-es/src/dagre/data/list.js", "../../node_modules/dagre-d3-es/src/dagre/greedy-fas.js", "../../node_modules/dagre-d3-es/src/dagre/acyclic.js", "../../node_modules/dagre-d3-es/src/dagre/normalize.js", "../../node_modules/dagre-d3-es/src/dagre/rank/util.js", "../../node_modules/dagre-d3-es/src/dagre/rank/feasible-tree.js", "../../node_modules/dagre-d3-es/src/graphlib/alg/dijkstra.js", "../../node_modules/dagre-d3-es/src/graphlib/alg/floyd-warshall.js", "../../node_modules/dagre-d3-es/src/graphlib/alg/topsort.js", "../../node_modules/dagre-d3-es/src/graphlib/alg/dfs.js", "../../node_modules/dagre-d3-es/src/graphlib/alg/postorder.js", "../../node_modules/dagre-d3-es/src/graphlib/alg/preorder.js", "../../node_modules/dagre-d3-es/src/dagre/rank/network-simplex.js", "../../node_modules/dagre-d3-es/src/dagre/rank/index.js", "../../node_modules/dagre-d3-es/src/dagre/nesting-graph.js", "../../node_modules/dagre-d3-es/src/dagre/order/add-subgraph-constraints.js", "../../node_modules/dagre-d3-es/src/dagre/order/build-layer-graph.js", "../../node_modules/dagre-d3-es/src/dagre/order/cross-count.js", "../../node_modules/dagre-d3-es/src/dagre/order/init-order.js", "../../node_modules/dagre-d3-es/src/dagre/order/barycenter.js", "../../node_modules/dagre-d3-es/src/dagre/order/resolve-conflicts.js", "../../node_modules/dagre-d3-es/src/dagre/order/sort.js", "../../node_modules/dagre-d3-es/src/dagre/order/sort-subgraph.js", "../../node_modules/dagre-d3-es/src/dagre/order/index.js", "../../node_modules/dagre-d3-es/src/dagre/parent-dummy-chains.js", "../../node_modules/dagre-d3-es/src/dagre/position/bk.js", "../../node_modules/dagre-d3-es/src/dagre/position/index.js", "../../node_modules/dagre-d3-es/src/dagre/layout.js"], + "sourcesContent": ["import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n", "import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n", "import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n", "import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n", "import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n", "import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n", "/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n", "/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n", "/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n", "/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n", "/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n", "import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n", "import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n", "import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n", "import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n", "import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n", "import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n", "import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n", "import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n", "import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n", "import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n", "import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n", "import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** 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/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n", "/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n", "import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n", "import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n", "import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n", "import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n", "import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n", "import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n", "/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n", "import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n", "import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n", "import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n", "import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n", "import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n", "import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n", "import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n", "import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n", "import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n", "import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n", "import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n", "import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n", "import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n", "import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n", "import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n", "import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n", "import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n", "import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n", "import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n", "import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n", "import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n", "import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n", "import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n", "import baseRest from './_baseRest.js';\nimport eq from './eq.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport keysIn from './keysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nexport default defaults;\n", "/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n", "/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n", "import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n", "import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nexport default baseFilter;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default filter;\n", "import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nexport default createFind;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n", "import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n", "import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n", "import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n", "import baseFor from './_baseFor.js';\nimport castFunction from './_castFunction.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nexport default forIn;\n", "import baseForOwn from './_baseForOwn.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, castFunction(iteratee));\n}\n\nexport default forOwn;\n", "/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nexport default baseGt;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n", "import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n", "import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n", "import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nexport default baseValues;\n", "import baseValues from './_baseValues.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nexport default values;\n", "/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n", "/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nexport default baseLt;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nexport default mapValues;\n", "import isSymbol from './isSymbol.js';\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nexport default baseExtremum;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseGt from './_baseGt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nexport default max;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseLt from './_baseLt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nexport default min;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseLt from './_baseLt.js';\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nexport default minBy;\n", "import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n", "import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n", "/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nexport default baseSortBy;\n", "import isSymbol from './isSymbol.js';\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nexport default compareAscending;\n", "import compareAscending from './_compareAscending.js';\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nexport default compareMultiple;\n", "import arrayMap from './_arrayMap.js';\nimport baseGet from './_baseGet.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport baseSortBy from './_baseSortBy.js';\nimport baseUnary from './_baseUnary.js';\nimport compareMultiple from './_compareMultiple.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nexport default baseOrderBy;\n", "import baseProperty from './_baseProperty.js';\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nexport default asciiSize;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nexport default unicodeSize;\n", "import asciiSize from './_asciiSize.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeSize from './_unicodeSize.js';\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nexport default stringSize;\n", "import basePickBy from './_basePickBy.js';\nimport hasIn from './hasIn.js';\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nexport default basePick;\n", "import basePick from './_basePick.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nexport default pick;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nexport default baseRange;\n", "import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nexport default createRange;\n", "import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n", "/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nexport default baseReduce;\n", "import arrayReduce from './_arrayReduce.js';\nimport baseEach from './_baseEach.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseReduce from './_baseReduce.js';\nimport isArray from './isArray.js';\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nexport default reduce;\n", "import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport stringSize from './_stringSize.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nexport default size;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseOrderBy from './_baseOrderBy.js';\nimport baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nexport default sortBy;\n", "import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n", "import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n", "import toString from './toString.js';\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nexport default uniqueId;\n", "/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nexport default baseZipObject;\n", "import assignValue from './_assignValue.js';\nimport baseZipObject from './_baseZipObject.js';\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nexport default zipObject;\n", "import * as _ from 'lodash-es';\n\nvar DEFAULT_EDGE_NAME = '\\x00';\nvar GRAPH_NODE = '\\x00';\nvar EDGE_KEY_DELIM = '\\x01';\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\nexport class Graph {\n constructor(opts = {}) {\n this._isDirected = _.has(opts, 'directed') ? opts.directed : true;\n this._isMultigraph = _.has(opts, 'multigraph') ? opts.multigraph : false;\n this._isCompound = _.has(opts, 'compound') ? opts.compound : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n }\n /* === Graph functions ========= */\n isDirected() {\n return this._isDirected;\n }\n isMultigraph() {\n return this._isMultigraph;\n }\n isCompound() {\n return this._isCompound;\n }\n setGraph(label) {\n this._label = label;\n return this;\n }\n graph() {\n return this._label;\n }\n /* === Node functions ========== */\n setDefaultNodeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n }\n nodeCount() {\n return this._nodeCount;\n }\n nodes() {\n return _.keys(this._nodes);\n }\n sources() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._in[v]);\n });\n }\n sinks() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._out[v]);\n });\n }\n setNodes(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function (v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n }\n setNode(v, value) {\n if (_.has(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n // @ts-expect-error\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n }\n node(v) {\n return this._nodes[v];\n }\n hasNode(v) {\n return _.has(this._nodes, v);\n }\n removeNode(v) {\n var self = this;\n if (_.has(this._nodes, v)) {\n var removeEdge = function (e) {\n self.removeEdge(self._edgeObjs[e]);\n };\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), function (child) {\n self.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n }\n setParent(v, parent) {\n if (!this._isCompound) {\n throw new Error('Cannot set parent in a non-compound graph');\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += '';\n for (var ancestor = parent; !_.isUndefined(ancestor); ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error('Setting ' + parent + ' as parent of ' + v + ' would create a cycle');\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n }\n _removeFromParentsChildList(v) {\n delete this._children[this._parent[v]][v];\n }\n parent(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n }\n children(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n }\n predecessors(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n }\n successors(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n }\n neighbors(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n }\n isLeaf(v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n }\n filterNodes(filter) {\n // @ts-expect-error\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound,\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function (value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function (e) {\n // @ts-expect-error\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function (v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n }\n /* === Edge functions ========== */\n setDefaultEdgeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n }\n edgeCount() {\n return this._edgeCount;\n }\n edges() {\n return _.values(this._edgeObjs);\n }\n setPath(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function (v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n }\n /*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\n setEdge() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = '' + v;\n w = '' + w;\n if (!_.isUndefined(name)) {\n name = '' + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (_.has(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error('Cannot set a named edge when isMultigraph = false');\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n // @ts-expect-error\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n }\n edge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return this._edgeLabels[e];\n }\n hasEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return _.has(this._edgeLabels, e);\n }\n removeEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n }\n inEdges(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.v === u;\n });\n }\n }\n outEdges(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.w === w;\n });\n }\n }\n nodeEdges(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n }\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) {\n delete map[k];\n }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../graphlib/index.js';\n\nexport {\n addDummyNode,\n simplify,\n asNonCompoundGraph,\n successorWeights,\n predecessorWeights,\n intersectRect,\n buildLayerMatrix,\n normalizeRanks,\n removeEmptyRanks,\n addBorderNode,\n maxRank,\n partition,\n time,\n notime,\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function (v) {\n simplified.setNode(v, g.node(v));\n });\n _.forEach(g.edges(), function (e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen),\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function (v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function (e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function (v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function (e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function (v) {\n var preds = {};\n _.forEach(g.inEdges(v), function (e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error('Not possible to find intersection inside of the rectangle');\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function () {\n return [];\n });\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(\n _.map(g.nodes(), function (v) {\n return g.node(v).rank;\n })\n );\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n if (_.has(node, 'rank')) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(\n _.map(g.nodes(), function (v) {\n return g.node(v).rank;\n })\n );\n\n var layers = [];\n _.forEach(g.nodes(), function (v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function (vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function (v) {\n g.node(v).rank += delta;\n });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0,\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, 'border', node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(\n _.map(g.nodes(), function (v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n })\n );\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function (value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + ' time: ' + (_.now() - start) + 'ms');\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n", "import * as _ from 'lodash-es';\nimport * as util from './util.js';\n\nexport { addBorderSegments };\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (_.has(node, 'minRank')) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1; rank < maxRank; ++rank) {\n addBorderNode(g, 'borderLeft', '_bl', v, node, rank);\n addBorderNode(g, 'borderRight', '_br', v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, 'border', label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n", "import * as _ from 'lodash-es';\n\nexport { adjust, undo };\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === 'lr' || rankDir === 'rl') {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === 'bt' || rankDir === 'rl') {\n reverseY(g);\n }\n\n if (rankDir === 'lr' || rankDir === 'rl') {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function (v) {\n swapWidthHeightOne(g.node(v));\n });\n _.forEach(g.edges(), function (e) {\n swapWidthHeightOne(g.edge(e));\n });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function (v) {\n reverseYOne(g.node(v));\n });\n\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (_.has(edge, 'y')) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function (v) {\n swapXYOne(g.node(v));\n });\n\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (_.has(edge, 'x')) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n", "/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nexport { List };\n\nclass List {\n constructor() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n }\n dequeue() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n }\n enqueue(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n }\n toString() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return '[' + strs.join(', ') + ']';\n }\n}\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== '_next' && k !== '_prev') {\n return v;\n }\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../graphlib/index.js';\nimport { List } from './data/list.js';\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nexport { greedyFAS };\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(\n _.map(results, function (e) {\n return g.outEdges(e.v, e.w);\n })\n );\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n while ((entry = sources.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function (edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function (edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry['in'] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function (v) {\n fasGraph.setNode(v, { v: v, in: 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function (e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, (fasGraph.node(e.v).out += weight));\n maxIn = Math.max(maxIn, (fasGraph.node(e.w)['in'] += weight));\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function () {\n return new List();\n });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function (v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry['in']) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry['in'] + zeroIdx].enqueue(entry);\n }\n}\n", "import * as _ from 'lodash-es';\nimport { greedyFAS } from './greedy-fas.js';\n\nexport { run, undo };\n\nfunction run(g) {\n var fas = g.graph().acyclicer === 'greedy' ? greedyFAS(g, weightFn(g)) : dfsFAS(g);\n _.forEach(fas, function (e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId('rev'));\n });\n\n function weightFn(g) {\n return function (e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (_.has(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function (e) {\n if (_.has(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function (e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n", "import * as _ from 'lodash-es';\nimport * as util from './util.js';\n\nexport { run, undo };\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function (edge) {\n normalizeEdge(g, edge);\n });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0,\n height: 0,\n edgeLabel: edgeLabel,\n edgeObj: e,\n rank: vRank,\n };\n dummy = util.addDummyNode(g, 'edge', attrs, '_d');\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n // @ts-expect-error\n attrs.dummy = 'edge-label';\n // @ts-expect-error\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function (v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === 'edge-label') {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n", "import * as _ from 'lodash-es';\n\nexport { longestPath, slack };\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(\n _.map(g.outEdges(v), function (e) {\n return dfs(e.w) - g.edge(e).minlen;\n })\n );\n\n if (\n rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null\n ) {\n // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../../graphlib/index.js';\nimport { slack } from './util.js';\n\nexport { feasibleTree };\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function (e) {\n var edgeV = e.v,\n w = v === edgeV ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function (e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function (v) {\n g.node(v).rank += delta;\n });\n}\n", "import * as _ from 'lodash-es';\nimport { PriorityQueue } from '../data/priority-queue.js';\n\nexport { dijkstra };\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction dijkstra(g, source, weightFn, edgeFn) {\n return runDijkstra(\n g,\n String(source),\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn ||\n function (v) {\n return g.outEdges(v);\n }\n );\n}\n\nfunction runDijkstra(g, source, weightFn, edgeFn) {\n var results = {};\n var pq = new PriorityQueue();\n var v, vEntry;\n\n var updateNeighbors = function (edge) {\n var w = edge.v !== v ? edge.v : edge.w;\n var wEntry = results[w];\n var weight = weightFn(edge);\n var distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error(\n 'dijkstra does not allow negative edge weights. ' +\n 'Bad edge: ' +\n edge +\n ' Weight: ' +\n weight\n );\n }\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n g.nodes().forEach(function (v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results[v] = { distance: distance };\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results[v];\n if (vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n return results;\n}\n", "import * as _ from 'lodash-es';\n\nexport { floydWarshall };\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction floydWarshall(g, weightFn, edgeFn) {\n return runFloydWarshall(\n g,\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn ||\n function (v) {\n return g.outEdges(v);\n }\n );\n}\n\nfunction runFloydWarshall(g, weightFn, edgeFn) {\n var results = {};\n var nodes = g.nodes();\n\n nodes.forEach(function (v) {\n results[v] = {};\n results[v][v] = { distance: 0 };\n nodes.forEach(function (w) {\n if (v !== w) {\n results[v][w] = { distance: Number.POSITIVE_INFINITY };\n }\n });\n edgeFn(v).forEach(function (edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var d = weightFn(edge);\n results[v][w] = { distance: d, predecessor: v };\n });\n });\n\n nodes.forEach(function (k) {\n var rowK = results[k];\n nodes.forEach(function (i) {\n var rowI = results[i];\n nodes.forEach(function (j) {\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n\n return results;\n}\n", "import * as _ from 'lodash-es';\n\nexport { topsort, CycleException };\n\ntopsort.CycleException = CycleException;\n\nfunction topsort(g) {\n var visited = {};\n var stack = {};\n var results = [];\n\n function visit(node) {\n if (_.has(stack, node)) {\n throw new CycleException();\n }\n\n if (!_.has(visited, node)) {\n stack[node] = true;\n visited[node] = true;\n _.each(g.predecessors(node), visit);\n delete stack[node];\n results.push(node);\n }\n }\n\n _.each(g.sinks(), visit);\n\n if (_.size(visited) !== g.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\nfunction CycleException() {}\nCycleException.prototype = new Error(); // must be an instance of Error to pass testing\n", "import * as _ from 'lodash-es';\n\nexport { dfs };\n\n/*\n * A helper that preforms a pre- or post-order traversal on the input graph\n * and returns the nodes in the order they were visited. If the graph is\n * undirected then this algorithm will navigate using neighbors. If the graph\n * is directed then this algorithm will navigate using successors.\n *\n * Order must be one of \"pre\" or \"post\".\n */\nfunction dfs(g, vs, order) {\n if (!_.isArray(vs)) {\n vs = [vs];\n }\n\n var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);\n\n var acc = [];\n var visited = {};\n _.each(vs, function (v) {\n if (!g.hasNode(v)) {\n throw new Error('Graph does not have node: ' + v);\n }\n\n doDfs(g, v, order === 'post', visited, navigation, acc);\n });\n return acc;\n}\n\nfunction doDfs(g, v, postorder, visited, navigation, acc) {\n if (!_.has(visited, v)) {\n visited[v] = true;\n\n if (!postorder) {\n acc.push(v);\n }\n _.each(navigation(v), function (w) {\n doDfs(g, w, postorder, visited, navigation, acc);\n });\n if (postorder) {\n acc.push(v);\n }\n }\n}\n", "import { dfs } from './dfs.js';\n\nexport { postorder };\n\nfunction postorder(g, vs) {\n return dfs(g, vs, 'post');\n}\n", "import { dfs } from './dfs.js';\n\nexport { preorder };\n\nfunction preorder(g, vs) {\n return dfs(g, vs, 'pre');\n}\n", "import * as _ from 'lodash-es';\nimport * as alg from '../../graphlib/alg/index.js';\nimport { simplify } from '../util.js';\nimport { feasibleTree } from './feasible-tree.js';\nimport { longestPath, slack } from './util.js';\n\nexport { networkSimplex };\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n longestPath(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = alg.postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function (v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function (e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function (w) {\n if (!_.has(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function (e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function (edge) {\n return (\n flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel)\n );\n });\n\n return _.minBy(candidates, function (edge) {\n return slack(g, edge);\n });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function (v) {\n return !g.node(v).parent;\n });\n var vs = alg.preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function (v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n", "import { feasibleTree } from './feasible-tree.js';\nimport { networkSimplex } from './network-simplex.js';\nimport { longestPath } from './util.js';\n\nexport { rank };\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch (g.graph().ranker) {\n case 'network-simplex':\n networkSimplexRanker(g);\n break;\n case 'tight-tree':\n tightTreeRanker(g);\n break;\n case 'longest-path':\n longestPathRanker(g);\n break;\n default:\n networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n", "import * as _ from 'lodash-es';\nimport * as util from './util.js';\n\nexport { run, cleanup };\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, 'root', {}, '_root');\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function (e) {\n g.edge(e).minlen *= nodeSep;\n });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function (child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, '_bt');\n var bottom = util.addBorderNode(g, '_bb');\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function (child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true,\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true,\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function (child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function (v) {\n dfs(v, 1);\n });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(\n g.edges(),\n function (acc, e) {\n return acc + g.edge(e).weight;\n },\n 0\n );\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n", "import * as _ from 'lodash-es';\n\nexport { addSubgraphConstraints };\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function (v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../../graphlib/index.js';\n\nexport { buildLayerGraph };\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true })\n .setGraph({ root: root })\n .setDefaultNodeLabel(function (v) {\n return g.node(v);\n });\n\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || (node.minRank <= rank && rank <= node.maxRank)) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function (e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (_.has(node, 'minRank')) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank],\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId('_root'))));\n return v;\n}\n", "import * as _ from 'lodash-es';\n\nexport { crossCount };\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i - 1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(\n southLayer,\n _.map(southLayer, function (v, i) {\n return i;\n })\n );\n var southEntries = _.flatten(\n _.map(northLayer, function (v) {\n return _.sortBy(\n _.map(g.outEdges(v), function (e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }),\n 'pos'\n );\n })\n );\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function () {\n return 0;\n });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(\n // @ts-expect-error\n southEntries.forEach(function (entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n // @ts-expect-error\n while (index > 0) {\n // @ts-expect-error\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n // @ts-expect-error\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n })\n );\n\n return cc;\n}\n", "import * as _ from 'lodash-es';\n\nexport { initOrder };\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function (v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(\n _.map(simpleNodes, function (v) {\n return g.node(v).rank;\n })\n );\n var layers = _.map(_.range(maxRank + 1), function () {\n return [];\n });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function (v) {\n return g.node(v).rank;\n });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n", "import * as _ from 'lodash-es';\n\nexport { barycenter };\n\nfunction barycenter(g, movable) {\n return _.map(movable, function (v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(\n inV,\n function (acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + edge.weight * nodeU.order,\n weight: acc.weight + edge.weight,\n };\n },\n { sum: 0, weight: 0 }\n );\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight,\n };\n }\n });\n}\n", "import * as _ from 'lodash-es';\n\nexport { resolveConflicts };\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function (entry, i) {\n var tmp = (mappedEntries[entry.v] = {\n indegree: 0,\n in: [],\n out: [],\n vs: [entry.v],\n i: i,\n });\n if (!_.isUndefined(entry.barycenter)) {\n // @ts-expect-error\n tmp.barycenter = entry.barycenter;\n // @ts-expect-error\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function (e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function (entry) {\n // @ts-expect-error\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function (uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (\n _.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter\n ) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function (wEntry) {\n wEntry['in'].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry['in'].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(\n _.filter(entries, function (entry) {\n return !entry.merged;\n }),\n function (entry) {\n return _.pick(entry, ['vs', 'i', 'barycenter', 'weight']);\n }\n );\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n", "import * as _ from 'lodash-es';\nimport * as util from '../util.js';\n\nexport { sort };\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function (entry) {\n return _.has(entry, 'barycenter');\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function (entry) {\n return -entry.i;\n }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function (entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n", "import * as _ from 'lodash-es';\nimport { barycenter } from './barycenter.js';\nimport { resolveConflicts } from './resolve-conflicts.js';\nimport { sort } from './sort.js';\n\nexport { sortSubgraph };\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight : undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function (w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function (entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (_.has(subgraphResult, 'barycenter')) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br]);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!_.has(result, 'barycenter')) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter =\n (result.barycenter * result.weight + blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function (entry) {\n entry.vs = _.flatten(\n entry.vs.map(function (v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n })\n );\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter =\n (target.barycenter * target.weight + other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../../graphlib/index.js';\nimport * as util from '../util.js';\nimport { addSubgraphConstraints } from './add-subgraph-constraints.js';\nimport { buildLayerGraph } from './build-layer-graph.js';\nimport { crossCount } from './cross-count.js';\nimport { initOrder } from './init-order.js';\nimport { sortSubgraph } from './sort-subgraph.js';\n\nexport { order };\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), 'inEdges'),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), 'outEdges');\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function (rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function (lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function (v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function (layer) {\n _.forEach(layer, function (v, i) {\n g.node(v).order = i;\n });\n });\n}\n", "import * as _ from 'lodash-es';\n\nexport { parentDummyChains };\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function (v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca && g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (\n pathIdx < path.length - 1 &&\n g.node((pathV = path[pathIdx + 1])).minRank <= node.rank\n ) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent && (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../../graphlib/index.js';\nimport * as util from '../util.js';\n\n/*\n * This module provides coordinate assignment based on Brandes and K\u00F6pf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nexport {\n positionX,\n findType1Conflicts,\n findType2Conflicts,\n addConflict,\n hasConflict,\n verticalAlignment,\n horizontalCompaction,\n alignCoordinates,\n findSmallestWidthAlignment,\n balance,\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function (v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i + 1), function (scanNode) {\n _.forEach(g.predecessors(scanNode), function (u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) && !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n // @ts-expect-error\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function (i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function (u) {\n var uNode = g.node(u);\n if (uNode.dummy && (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function (v, southLookahead) {\n if (g.node(v).dummy === 'border') {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n // @ts-expect-error\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function (u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return _.has(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function (layer) {\n _.forEach(layer, function (v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function (layer) {\n var prevIdx = -1;\n _.forEach(layer, function (v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function (w) {\n return pos[w];\n });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v && prevIdx < pos[w] && !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? 'borderLeft' : 'borderRight';\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function (acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function (acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function (v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function (layer) {\n var u;\n _.forEach(layer, function (v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach(['u', 'd'], function (vert) {\n _.forEach(['l', 'r'], function (horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === 'l' ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function (x) {\n return x + delta;\n });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function (ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(findType1Conflicts(g, layering), findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach(['u', 'd'], function (vert) {\n adjustedLayering = vert === 'u' ? layering : _.values(layering).reverse();\n _.forEach(['l', 'r'], function (horiz) {\n if (horiz === 'r') {\n adjustedLayering = _.map(adjustedLayering, function (inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === 'u' ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering, align.root, align.align, horiz === 'r');\n if (horiz === 'r') {\n xs = _.mapValues(xs, function (x) {\n return -x;\n });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function (g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (_.has(vLabel, 'labelpos')) {\n switch (vLabel.labelpos.toLowerCase()) {\n case 'l':\n delta = -vLabel.width / 2;\n break;\n case 'r':\n delta = vLabel.width / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (_.has(wLabel, 'labelpos')) {\n switch (wLabel.labelpos.toLowerCase()) {\n case 'l':\n delta = wLabel.width / 2;\n break;\n case 'r':\n delta = -wLabel.width / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n", "import * as _ from 'lodash-es';\nimport * as util from '../util.js';\nimport { positionX } from './bk.js';\n\nexport { position };\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forOwn(positionX(g), function (x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function (layer) {\n var maxHeight = _.max(\n _.map(layer, function (v) {\n return g.node(v).height;\n })\n );\n _.forEach(layer, function (v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../graphlib/index.js';\nimport { addBorderSegments } from './add-border-segments.js';\nimport * as coordinateSystem from './coordinate-system.js';\nimport * as acyclic from './acyclic.js';\nimport * as normalize from './normalize.js';\nimport { rank } from './rank/index.js';\nimport * as nestingGraph from './nesting-graph.js';\nimport { order } from './order/index.js';\nimport { parentDummyChains } from './parent-dummy-chains.js';\nimport { position } from './position/index.js';\nimport * as util from './util.js';\n\nexport { layout };\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time('layout', function () {\n var layoutGraph = time(' buildLayoutGraph', function () {\n return buildLayoutGraph(g);\n });\n time(' runLayout', function () {\n runLayout(layoutGraph, time);\n });\n time(' updateInputGraph', function () {\n updateInputGraph(g, layoutGraph);\n });\n });\n}\n\nfunction runLayout(g, time) {\n time(' makeSpaceForEdgeLabels', function () {\n makeSpaceForEdgeLabels(g);\n });\n time(' removeSelfEdges', function () {\n removeSelfEdges(g);\n });\n time(' acyclic', function () {\n acyclic.run(g);\n });\n time(' nestingGraph.run', function () {\n nestingGraph.run(g);\n });\n time(' rank', function () {\n rank(util.asNonCompoundGraph(g));\n });\n time(' injectEdgeLabelProxies', function () {\n injectEdgeLabelProxies(g);\n });\n time(' removeEmptyRanks', function () {\n util.removeEmptyRanks(g);\n });\n time(' nestingGraph.cleanup', function () {\n nestingGraph.cleanup(g);\n });\n time(' normalizeRanks', function () {\n util.normalizeRanks(g);\n });\n time(' assignRankMinMax', function () {\n assignRankMinMax(g);\n });\n time(' removeEdgeLabelProxies', function () {\n removeEdgeLabelProxies(g);\n });\n time(' normalize.run', function () {\n normalize.run(g);\n });\n time(' parentDummyChains', function () {\n parentDummyChains(g);\n });\n time(' addBorderSegments', function () {\n addBorderSegments(g);\n });\n time(' order', function () {\n order(g);\n });\n time(' insertSelfEdges', function () {\n insertSelfEdges(g);\n });\n time(' adjustCoordinateSystem', function () {\n coordinateSystem.adjust(g);\n });\n time(' position', function () {\n position(g);\n });\n time(' positionSelfEdges', function () {\n positionSelfEdges(g);\n });\n time(' removeBorderNodes', function () {\n removeBorderNodes(g);\n });\n time(' normalize.undo', function () {\n normalize.undo(g);\n });\n time(' fixupEdgeLabelCoords', function () {\n fixupEdgeLabelCoords(g);\n });\n time(' undoCoordinateSystem', function () {\n coordinateSystem.undo(g);\n });\n time(' translateGraph', function () {\n translateGraph(g);\n });\n time(' assignNodeIntersects', function () {\n assignNodeIntersects(g);\n });\n time(' reversePoints', function () {\n reversePointsForReversedEdges(g);\n });\n time(' acyclic.undo', function () {\n acyclic.undo(g);\n });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function (v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function (e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (_.has(layoutLabel, 'x')) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = ['nodesep', 'edgesep', 'ranksep', 'marginx', 'marginy'];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: 'tb' };\nvar graphAttrs = ['acyclicer', 'ranker', 'rankdir', 'align'];\nvar nodeNumAttrs = ['width', 'height'];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = ['minlen', 'weight', 'width', 'height', 'labeloffset'];\nvar edgeDefaults = {\n minlen: 1,\n weight: 1,\n width: 0,\n height: 0,\n labeloffset: 10,\n labelpos: 'r',\n};\nvar edgeAttrs = ['labelpos'];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(\n _.merge({}, graphDefaults, selectNumberAttrs(graph, graphNumAttrs), _.pick(graph, graphAttrs))\n );\n\n _.forEach(inputGraph.nodes(), function (v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function (e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(\n e,\n _.merge({}, edgeDefaults, selectNumberAttrs(edge, edgeNumAttrs), _.pick(edge, edgeAttrs))\n );\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== 'c') {\n if (graph.rankdir === 'TB' || graph.rankdir === 'BT') {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, 'edge-proxy', label, '_ep');\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n // @ts-expect-error\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n if (node.dummy === 'edge-proxy') {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function (v) {\n getExtremes(g.node(v));\n });\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (_.has(edge, 'x')) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function (p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (_.has(edge, 'x')) {\n edge.x -= minX;\n }\n if (_.has(edge, 'y')) {\n edge.y -= minY;\n }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (_.has(edge, 'x')) {\n if (edge.labelpos === 'l' || edge.labelpos === 'r') {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case 'l':\n edge.x -= edge.width / 2 + edge.labeloffset;\n break;\n case 'r':\n edge.x += edge.width / 2 + edge.labeloffset;\n break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function (v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function (v) {\n if (g.node(v).dummy === 'border') {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function (e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function (layer) {\n var orderShift = 0;\n _.forEach(layer, function (v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function (selfEdge) {\n util.addDummyNode(\n g,\n 'selfedge',\n {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + ++orderShift,\n e: selfEdge.e,\n label: selfEdge.label,\n },\n '_se'\n );\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n if (node.dummy === 'selfedge') {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + (2 * dx) / 3, y: y - dy },\n { x: x + (5 * dx) / 6, y: y - dy },\n { x: x + dx, y: y },\n { x: x + (5 * dx) / 6, y: y + dy },\n { x: x + (2 * dx) / 3, y: y + dy },\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function (v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n"], + "mappings": "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", + "names": ["symbolTag", "isSymbol", "value", "isObjectLike_default", "baseGetTag_default", "isSymbol_default", "arrayMap", "array", "iteratee", "index", "length", "result", "arrayMap_default", "INFINITY", "symbolProto", "Symbol_default", "symbolToString", "baseToString", "value", "isArray_default", "arrayMap_default", "isSymbol_default", "result", "baseToString_default", "reWhitespace", "trimmedEndIndex", "string", "index", "trimmedEndIndex_default", "reTrimStart", "baseTrim", "string", "trimmedEndIndex_default", "baseTrim_default", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "value", "isSymbol_default", "isObject_default", "other", "baseTrim_default", "isBinary", "toNumber_default", "INFINITY", "MAX_INTEGER", "toFinite", "value", "toNumber_default", "sign", "toFinite_default", "toInteger", "value", "result", "toFinite_default", "remainder", "toInteger_default", "noop", "noop_default", "arrayEach", "array", "iteratee", "index", "length", "arrayEach_default", "baseFindIndex", "array", "predicate", "fromIndex", "fromRight", "length", "index", "baseFindIndex_default", "baseIsNaN", "value", "baseIsNaN_default", "strictIndexOf", "array", "value", "fromIndex", "index", "length", "strictIndexOf_default", "baseIndexOf", "array", "value", "fromIndex", "strictIndexOf_default", "baseFindIndex_default", "baseIsNaN_default", "baseIndexOf_default", "arrayIncludes", "array", "value", "length", "baseIndexOf_default", "arrayIncludes_default", "keys", "object", "isArrayLike_default", "arrayLikeKeys_default", "baseKeys_default", "keys_default", "reIsDeepProp", "reIsPlainProp", "isKey", "value", "object", "isArray_default", "type", "isSymbol_default", "isKey_default", "MAX_MEMOIZE_SIZE", "memoizeCapped", "func", "result", "memoize_default", "key", "cache", "memoizeCapped_default", "rePropName", "reEscapeChar", "stringToPath", "memoizeCapped_default", "string", "result", "match", "number", "quote", "subString", "stringToPath_default", "toString", "value", "baseToString_default", "toString_default", "castPath", "value", "object", "isArray_default", "isKey_default", "stringToPath_default", "toString_default", "castPath_default", "INFINITY", "toKey", "value", "isSymbol_default", "result", "toKey_default", "baseGet", "object", "path", "castPath_default", "index", "length", "toKey_default", "baseGet_default", "get", "object", "path", "defaultValue", "result", "baseGet_default", "get_default", "arrayPush", "array", "values", "index", "length", "offset", "arrayPush_default", "spreadableSymbol", "Symbol_default", "isFlattenable", "value", "isArray_default", "isArguments_default", "isFlattenable_default", "baseFlatten", "array", "depth", "predicate", "isStrict", "result", "index", "length", "isFlattenable_default", "value", "arrayPush_default", "baseFlatten_default", "flatten", "array", "length", "baseFlatten_default", "flatten_default", "flatRest", "func", "setToString_default", "overRest_default", "flatten_default", "flatRest_default", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsZWJ", "reHasUnicode", "hasUnicode", "string", "hasUnicode_default", "arrayReduce", "array", "iteratee", "accumulator", "initAccum", "index", "length", "arrayReduce_default", "baseAssign", "object", "source", "copyObject_default", "keys_default", "baseAssign_default", "baseAssignIn", "object", "source", "copyObject_default", "keysIn_default", "baseAssignIn_default", "arrayFilter", "array", "predicate", "index", "length", "resIndex", "result", "value", "arrayFilter_default", "stubArray", "stubArray_default", "objectProto", "propertyIsEnumerable", "nativeGetSymbols", "getSymbols", "object", "arrayFilter_default", "symbol", "stubArray_default", "getSymbols_default", "copySymbols", "source", "object", "copyObject_default", "getSymbols_default", "copySymbols_default", "nativeGetSymbols", "getSymbolsIn", "object", "result", "arrayPush_default", "getSymbols_default", "getPrototype_default", "stubArray_default", "getSymbolsIn_default", "copySymbolsIn", "source", "object", "copyObject_default", "getSymbolsIn_default", "copySymbolsIn_default", "baseGetAllKeys", "object", "keysFunc", "symbolsFunc", "result", "isArray_default", "arrayPush_default", "baseGetAllKeys_default", "getAllKeys", "object", "baseGetAllKeys_default", "keys_default", "getSymbols_default", "getAllKeys_default", "getAllKeysIn", "object", "baseGetAllKeys_default", "keysIn_default", "getSymbolsIn_default", "getAllKeysIn_default", "objectProto", "hasOwnProperty", "initCloneArray", "array", "length", "result", "initCloneArray_default", "cloneDataView", "dataView", "isDeep", "buffer", "cloneArrayBuffer_default", "cloneDataView_default", "reFlags", "cloneRegExp", "regexp", "result", "cloneRegExp_default", "symbolProto", "Symbol_default", "symbolValueOf", "cloneSymbol", "symbol", "cloneSymbol_default", "boolTag", "dateTag", "mapTag", "numberTag", "regexpTag", "setTag", "stringTag", "symbolTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "initCloneByTag", "object", "tag", "isDeep", "Ctor", "cloneArrayBuffer_default", "cloneDataView_default", "cloneTypedArray_default", "cloneRegExp_default", "cloneSymbol_default", "initCloneByTag_default", "mapTag", "baseIsMap", "value", "isObjectLike_default", "getTag_default", "baseIsMap_default", "nodeIsMap", "nodeUtil_default", "isMap", "baseUnary_default", "baseIsMap_default", "isMap_default", "setTag", "baseIsSet", "value", "isObjectLike_default", "getTag_default", "baseIsSet_default", "nodeIsSet", "nodeUtil_default", "isSet", "baseUnary_default", "baseIsSet_default", "isSet_default", "CLONE_DEEP_FLAG", "CLONE_FLAT_FLAG", "CLONE_SYMBOLS_FLAG", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "genTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "symbolTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "cloneableTags", "baseClone", "value", "bitmask", "customizer", "key", "object", "stack", "result", "isDeep", "isFlat", "isFull", "isObject_default", "isArr", "isArray_default", "initCloneArray_default", "copyArray_default", "tag", "getTag_default", "isFunc", "isBuffer_default", "cloneBuffer_default", "initCloneObject_default", "copySymbolsIn_default", "baseAssignIn_default", "copySymbols_default", "baseAssign_default", "initCloneByTag_default", "Stack_default", "stacked", "isSet_default", "subValue", "isMap_default", "keysFunc", "getAllKeysIn_default", "getAllKeys_default", "keysIn_default", "keys_default", "props", "arrayEach_default", "assignValue_default", "baseClone_default", "CLONE_SYMBOLS_FLAG", "clone", "value", "baseClone_default", "clone_default", "CLONE_DEEP_FLAG", "CLONE_SYMBOLS_FLAG", "cloneDeep", "value", "baseClone_default", "cloneDeep_default", "HASH_UNDEFINED", "setCacheAdd", "value", "setCacheAdd_default", "setCacheHas", "value", "setCacheHas_default", "SetCache", "values", "index", "length", "MapCache_default", "setCacheAdd_default", "setCacheHas_default", "SetCache_default", "arraySome", "array", "predicate", "index", "length", "arraySome_default", "cacheHas", "cache", "key", "cacheHas_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "equalArrays", "array", "other", "bitmask", "customizer", "equalFunc", "stack", "isPartial", "arrLength", "othLength", "arrStacked", "othStacked", "index", "result", "seen", "SetCache_default", "arrValue", "othValue", "compared", "arraySome_default", "othIndex", "cacheHas_default", "equalArrays_default", "mapToArray", "map", "index", "result", "value", "key", "mapToArray_default", "setToArray", "set", "index", "result", "value", "setToArray_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "boolTag", "dateTag", "errorTag", "mapTag", "numberTag", "regexpTag", "setTag", "stringTag", "symbolTag", "arrayBufferTag", "dataViewTag", "symbolProto", "Symbol_default", "symbolValueOf", "equalByTag", "object", "other", "tag", "bitmask", "customizer", "equalFunc", "stack", "Uint8Array_default", "eq_default", "convert", "mapToArray_default", "isPartial", "setToArray_default", "stacked", "result", "equalArrays_default", "equalByTag_default", "COMPARE_PARTIAL_FLAG", "objectProto", "hasOwnProperty", "equalObjects", "object", "other", "bitmask", "customizer", "equalFunc", "stack", "isPartial", "objProps", "getAllKeys_default", "objLength", "othProps", "othLength", "index", "key", "objStacked", "othStacked", "result", "skipCtor", "objValue", "othValue", "compared", "objCtor", "othCtor", "equalObjects_default", "COMPARE_PARTIAL_FLAG", "argsTag", "arrayTag", "objectTag", "objectProto", "hasOwnProperty", "baseIsEqualDeep", "object", "other", "bitmask", "customizer", "equalFunc", "stack", "objIsArr", "isArray_default", "othIsArr", "objTag", "getTag_default", "othTag", "objIsObj", "othIsObj", "isSameTag", "isBuffer_default", "Stack_default", "isTypedArray_default", "equalArrays_default", "equalByTag_default", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "equalObjects_default", "baseIsEqualDeep_default", "baseIsEqual", "value", "other", "bitmask", "customizer", "stack", "isObjectLike_default", "baseIsEqualDeep_default", "baseIsEqual_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "baseIsMatch", "object", "source", "matchData", "customizer", "index", "length", "noCustomizer", "data", "key", "objValue", "srcValue", "stack", "Stack_default", "result", "baseIsEqual_default", "baseIsMatch_default", "isStrictComparable", "value", "isObject_default", "isStrictComparable_default", "getMatchData", "object", "result", "keys_default", "length", "key", "value", "isStrictComparable_default", "getMatchData_default", "matchesStrictComparable", "key", "srcValue", "object", "matchesStrictComparable_default", "baseMatches", "source", "matchData", "getMatchData_default", "matchesStrictComparable_default", "object", "baseIsMatch_default", "baseMatches_default", "baseHasIn", "object", "key", "baseHasIn_default", "hasPath", "object", "path", "hasFunc", "castPath_default", "index", "length", "result", "key", "toKey_default", "isLength_default", "isIndex_default", "isArray_default", "isArguments_default", "hasPath_default", "hasIn", "object", "path", "hasPath_default", "baseHasIn_default", "hasIn_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "baseMatchesProperty", "path", "srcValue", "isKey_default", "isStrictComparable_default", "matchesStrictComparable_default", "toKey_default", "object", "objValue", "get_default", "hasIn_default", "baseIsEqual_default", "baseMatchesProperty_default", "baseProperty", "key", "object", "baseProperty_default", "basePropertyDeep", "path", "object", "baseGet_default", "basePropertyDeep_default", "property", "path", "isKey_default", "baseProperty_default", "toKey_default", "basePropertyDeep_default", "property_default", "baseIteratee", "value", "identity_default", "isArray_default", "baseMatchesProperty_default", "baseMatches_default", "property_default", "baseIteratee_default", "baseForOwn", "object", "iteratee", "baseFor_default", "keys_default", "baseForOwn_default", "createBaseEach", "eachFunc", "fromRight", "collection", "iteratee", "isArrayLike_default", "length", "index", "iterable", "createBaseEach_default", "baseEach", "createBaseEach_default", "baseForOwn_default", "baseEach_default", "now", "root_default", "now_default", "objectProto", "hasOwnProperty", "defaults", "baseRest_default", "object", "sources", "index", "length", "guard", "isIterateeCall_default", "source", "props", "keysIn_default", "propsIndex", "propsLength", "key", "value", "eq_default", "defaults_default", "arrayIncludesWith", "array", "value", "comparator", "index", "length", "arrayIncludesWith_default", "last", "array", "length", "last_default", "castFunction", "value", "identity_default", "castFunction_default", "forEach", "collection", "iteratee", "func", "isArray_default", "arrayEach_default", "baseEach_default", "castFunction_default", "forEach_default", "baseFilter", "collection", "predicate", "result", "baseEach_default", "value", "index", "baseFilter_default", "filter", "collection", "predicate", "func", "isArray_default", "arrayFilter_default", "baseFilter_default", "baseIteratee_default", "filter_default", "createFind", "findIndexFunc", "collection", "predicate", "fromIndex", "iterable", "isArrayLike_default", "iteratee", "baseIteratee_default", "keys_default", "key", "index", "createFind_default", "nativeMax", "findIndex", "array", "predicate", "fromIndex", "length", "index", "toInteger_default", "baseFindIndex_default", "baseIteratee_default", "findIndex_default", "find", "createFind_default", "findIndex_default", "find_default", "baseMap", "collection", "iteratee", "index", "result", "isArrayLike_default", "baseEach_default", "value", "key", "baseMap_default", "map", "collection", "iteratee", "func", "isArray_default", "arrayMap_default", "baseMap_default", "baseIteratee_default", "map_default", "forIn", "object", "iteratee", "baseFor_default", "castFunction_default", "keysIn_default", "forIn_default", "forOwn", "object", "iteratee", "baseForOwn_default", "castFunction_default", "forOwn_default", "baseGt", "value", "other", "baseGt_default", "objectProto", "hasOwnProperty", "baseHas", "object", "key", "baseHas_default", "has", "object", "path", "hasPath_default", "baseHas_default", "has_default", "stringTag", "isString", "value", "isArray_default", "isObjectLike_default", "baseGetTag_default", "isString_default", "baseValues", "object", "props", "arrayMap_default", "key", "baseValues_default", "values", "object", "baseValues_default", "keys_default", "values_default", "isUndefined", "value", "isUndefined_default", "baseLt", "value", "other", "baseLt_default", "mapValues", "object", "iteratee", "result", "baseIteratee_default", "baseForOwn_default", "value", "key", "baseAssignValue_default", "mapValues_default", "baseExtremum", "array", "iteratee", "comparator", "index", "length", "value", "current", "computed", "isSymbol_default", "result", "baseExtremum_default", "max", "array", "baseExtremum_default", "identity_default", "baseGt_default", "max_default", "min", "array", "baseExtremum_default", "identity_default", "baseLt_default", "min_default", "minBy", "array", "iteratee", "baseExtremum_default", "baseIteratee_default", "baseLt_default", "minBy_default", "baseSet", "object", "path", "value", "customizer", "isObject_default", "castPath_default", "index", "length", "lastIndex", "nested", "key", "toKey_default", "newValue", "objValue", "isIndex_default", "assignValue_default", "baseSet_default", "basePickBy", "object", "paths", "predicate", "index", "length", "result", "path", "value", "baseGet_default", "baseSet_default", "castPath_default", "basePickBy_default", "baseSortBy", "array", "comparer", "length", "baseSortBy_default", "compareAscending", "value", "other", "valIsDefined", "valIsNull", "valIsReflexive", "valIsSymbol", "isSymbol_default", "othIsDefined", "othIsNull", "othIsReflexive", "othIsSymbol", "compareAscending_default", "compareMultiple", "object", "other", "orders", "index", "objCriteria", "othCriteria", "length", "ordersLength", "result", "compareAscending_default", "order", "compareMultiple_default", "baseOrderBy", "collection", "iteratees", "orders", "arrayMap_default", "iteratee", "isArray_default", "value", "baseGet_default", "identity_default", "index", "baseUnary_default", "baseIteratee_default", "result", "baseMap_default", "key", "criteria", "baseSortBy_default", "object", "other", "compareMultiple_default", "baseOrderBy_default", "asciiSize", "baseProperty_default", "asciiSize_default", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsAstral", "rsCombo", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsZWJ", "reOptMod", "rsOptVar", "rsOptJoin", "rsSeq", "rsSymbol", "reUnicode", "unicodeSize", "string", "result", "unicodeSize_default", "stringSize", "string", "hasUnicode_default", "unicodeSize_default", "asciiSize_default", "stringSize_default", "basePick", "object", "paths", "basePickBy_default", "value", "path", "hasIn_default", "basePick_default", "pick", "flatRest_default", "object", "paths", "basePick_default", "pick_default", "nativeCeil", "nativeMax", "baseRange", "start", "end", "step", "fromRight", "index", "length", "result", "baseRange_default", "createRange", "fromRight", "start", "end", "step", "isIterateeCall_default", "toFinite_default", "baseRange_default", "createRange_default", "range", "createRange_default", "range_default", "baseReduce", "collection", "iteratee", "accumulator", "initAccum", "eachFunc", "value", "index", "baseReduce_default", "reduce", "collection", "iteratee", "accumulator", "func", "isArray_default", "arrayReduce_default", "baseReduce_default", "initAccum", "baseIteratee_default", "baseEach_default", "reduce_default", "mapTag", "setTag", "size", "collection", "isArrayLike_default", "isString_default", "stringSize_default", "tag", "getTag_default", "baseKeys_default", "size_default", "sortBy", "baseRest_default", "collection", "iteratees", "length", "isIterateeCall_default", "baseOrderBy_default", "baseFlatten_default", "sortBy_default", "INFINITY", "createSet", "Set_default", "setToArray_default", "values", "noop_default", "createSet_default", "LARGE_ARRAY_SIZE", "baseUniq", "array", "iteratee", "comparator", "index", "includes", "arrayIncludes_default", "length", "isCommon", "result", "seen", "arrayIncludesWith_default", "set", "createSet_default", "setToArray_default", "cacheHas_default", "SetCache_default", "outer", "value", "computed", "seenIndex", "baseUniq_default", "union", "baseRest_default", "arrays", "baseUniq_default", "baseFlatten_default", "isArrayLikeObject_default", "union_default", "idCounter", "uniqueId", "prefix", "id", "toString_default", "uniqueId_default", "baseZipObject", "props", "values", "assignFunc", "index", "length", "valsLength", "result", "value", "baseZipObject_default", "zipObject", "props", "values", "baseZipObject_default", "assignValue_default", "zipObject_default", "DEFAULT_EDGE_NAME", "GRAPH_NODE", "EDGE_KEY_DELIM", "Graph", "opts", "has_default", "constant_default", "label", "newDefault", "isFunction_default", "keys_default", "self", "filter_default", "v", "isEmpty_default", "vs", "value", "args", "forEach_default", "removeEdge", "e", "child", "parent", "isUndefined_default", "ancestor", "children", "predsV", "sucsV", "preds", "union_default", "neighbors", "filter", "copy", "parents", "findParent", "values_default", "reduce_default", "w", "name", "valueSpecified", "arg0", "edgeArgsToId", "edgeObj", "edgeArgsToObj", "incrementOrInitEntry", "edgeObjToId", "edge", "decrementOrRemoveEntry", "u", "inV", "edges", "outV", "inEdges", "map", "k", "isDirected", "v_", "w_", "tmp", "addDummyNode", "g", "type", "attrs", "name", "v", "uniqueId_default", "simplify", "simplified", "Graph", "forEach_default", "e", "simpleLabel", "label", "asNonCompoundGraph", "intersectRect", "rect", "point", "x", "y", "dx", "dy", "w", "h", "sx", "sy", "buildLayerMatrix", "g", "layering", "map_default", "range_default", "maxRank", "forEach_default", "v", "node", "rank", "isUndefined_default", "normalizeRanks", "min", "min_default", "has_default", "removeEmptyRanks", "offset", "layers", "delta", "nodeRankFactor", "vs", "addBorderNode", "prefix", "order", "addDummyNode", "max_default", "partition", "collection", "fn", "result", "value", "time", "name", "start", "now_default", "notime", "addBorderSegments", "g", "dfs", "v", "children", "node", "forEach_default", "has_default", "rank", "maxRank", "addBorderNode", "prop", "prefix", "sg", "sgNode", "label", "prev", "curr", "addDummyNode", "adjust", "g", "rankDir", "swapWidthHeight", "undo", "reverseY", "swapXY", "forEach_default", "v", "swapWidthHeightOne", "attrs", "w", "reverseYOne", "edge", "has_default", "swapXYOne", "x", "List", "sentinel", "entry", "unlink", "strs", "curr", "filterOutLinks", "k", "v", "DEFAULT_WEIGHT_FN", "constant_default", "greedyFAS", "g", "weightFn", "state", "buildState", "results", "doGreedyFAS", "flatten_default", "map_default", "e", "buckets", "zeroIdx", "sources", "sinks", "entry", "removeNode", "i", "collectPredecessors", "forEach_default", "edge", "weight", "uEntry", "assignBucket", "w", "wEntry", "fasGraph", "Graph", "maxIn", "maxOut", "v", "prevWeight", "edgeWeight", "range_default", "List", "run", "g", "fas", "greedyFAS", "weightFn", "dfsFAS", "forEach_default", "e", "label", "uniqueId_default", "stack", "visited", "dfs", "v", "has_default", "undo", "forwardName", "run", "g", "forEach_default", "edge", "normalizeEdge", "v", "vRank", "w", "wRank", "name", "edgeLabel", "labelRank", "dummy", "attrs", "i", "addDummyNode", "undo", "node", "origLabel", "longestPath", "g", "visited", "dfs", "v", "label", "has_default", "rank", "min_default", "map_default", "e", "forEach_default", "slack", "feasibleTree", "g", "t", "Graph", "start", "size", "edge", "delta", "tightTree", "findMinSlackEdge", "slack", "shiftRanks", "dfs", "v", "forEach_default", "e", "edgeV", "w", "minBy_default", "DEFAULT_WEIGHT_FUNC", "constant_default", "DEFAULT_WEIGHT_FUNC", "constant_default", "topsort", "CycleException", "g", "visited", "stack", "results", "visit", "node", "has_default", "forEach_default", "size_default", "dfs", "g", "vs", "order", "isArray_default", "navigation", "acc", "visited", "forEach_default", "v", "doDfs", "postorder", "has_default", "w", "postorder", "g", "vs", "dfs", "preorder", "g", "vs", "dfs", "networkSimplex", "initLowLimValues", "initCutValues", "calcCutValue", "leaveEdge", "enterEdge", "exchangeEdges", "g", "simplify", "longestPath", "t", "feasibleTree", "e", "f", "vs", "postorder", "forEach_default", "v", "assignCutValue", "child", "childLab", "parent", "childIsTail", "graphEdge", "cutValue", "isOutEdge", "other", "pointsToHead", "otherWeight", "isTreeEdge", "otherCutValue", "tree", "root", "dfsAssignLowLim", "visited", "nextLim", "low", "label", "w", "has_default", "find_default", "edge", "vLabel", "wLabel", "tailLabel", "flip", "candidates", "filter_default", "isDescendant", "minBy_default", "slack", "updateRanks", "preorder", "flipped", "u", "rootLabel", "rank", "g", "networkSimplexRanker", "tightTreeRanker", "longestPathRanker", "longestPath", "feasibleTree", "networkSimplex", "run", "g", "root", "addDummyNode", "depths", "treeDepths", "height", "max_default", "values_default", "nodeSep", "forEach_default", "e", "weight", "sumWeights", "child", "dfs", "v", "children", "top", "addBorderNode", "bottom", "label", "childNode", "childTop", "childBottom", "thisWeight", "minlen", "depth", "reduce_default", "acc", "cleanup", "graphLabel", "edge", "addSubgraphConstraints", "g", "cg", "vs", "prev", "rootPrev", "forEach_default", "v", "child", "parent", "prevChild", "buildLayerGraph", "g", "rank", "relationship", "root", "createRootNode", "result", "Graph", "v", "forEach_default", "node", "parent", "e", "edge", "weight", "isUndefined_default", "has_default", "uniqueId_default", "crossCount", "g", "layering", "cc", "i", "twoLayerCrossCount", "northLayer", "southLayer", "southPos", "zipObject_default", "map_default", "v", "southEntries", "flatten_default", "sortBy_default", "e", "firstIndex", "treeSize", "tree", "forEach_default", "entry", "index", "weightSum", "initOrder", "g", "visited", "simpleNodes", "filter_default", "v", "maxRank", "max_default", "map_default", "layers", "range_default", "dfs", "has_default", "node", "forEach_default", "orderedVs", "sortBy_default", "barycenter", "g", "movable", "map_default", "v", "inV", "result", "reduce_default", "acc", "e", "edge", "nodeU", "resolveConflicts", "entries", "cg", "mappedEntries", "forEach_default", "entry", "i", "tmp", "isUndefined_default", "e", "entryV", "entryW", "sourceSet", "filter_default", "doResolveConflicts", "handleIn", "vEntry", "uEntry", "mergeEntries", "handleOut", "wEntry", "map_default", "pick_default", "target", "source", "sum", "weight", "sort", "entries", "biasRight", "parts", "partition", "entry", "has_default", "sortable", "unsortable", "sortBy_default", "vs", "sum", "weight", "vsIndex", "compareWithBias", "consumeUnsortable", "forEach_default", "result", "flatten_default", "index", "last", "last_default", "bias", "entryV", "entryW", "sortSubgraph", "g", "v", "cg", "biasRight", "movable", "node", "bl", "br", "subgraphs", "filter_default", "w", "barycenters", "barycenter", "forEach_default", "entry", "subgraphResult", "has_default", "mergeBarycenters", "entries", "resolveConflicts", "expandSubgraphs", "result", "sort", "flatten_default", "blPred", "brPred", "target", "other", "isUndefined_default", "order", "g", "maxRank", "downLayerGraphs", "buildLayerGraphs", "range_default", "upLayerGraphs", "layering", "initOrder", "assignOrder", "bestCC", "best", "i", "lastBest", "sweepLayerGraphs", "buildLayerMatrix", "cc", "crossCount", "cloneDeep_default", "ranks", "relationship", "map_default", "rank", "buildLayerGraph", "layerGraphs", "biasRight", "cg", "Graph", "forEach_default", "lg", "root", "sorted", "sortSubgraph", "v", "addSubgraphConstraints", "layer", "parentDummyChains", "g", "postorderNums", "postorder", "forEach_default", "v", "node", "edgeObj", "pathData", "findPath", "path", "lca", "pathIdx", "pathV", "ascending", "w", "vPath", "wPath", "low", "lim", "parent", "result", "dfs", "findType1Conflicts", "g", "layering", "conflicts", "visitLayer", "prevLayer", "layer", "k0", "scanPos", "prevLayerLength", "lastNode", "last_default", "forEach_default", "v", "i", "w", "findOtherInnerSegmentNode", "k1", "scanNode", "u", "uLabel", "uPos", "addConflict", "reduce_default", "findType2Conflicts", "scan", "south", "southPos", "southEnd", "prevNorthBorder", "nextNorthBorder", "range_default", "uNode", "north", "prevNorthPos", "nextNorthPos", "southLookahead", "predecessors", "find_default", "tmp", "conflictsV", "hasConflict", "has_default", "verticalAlignment", "neighborFn", "root", "align", "pos", "order", "prevIdx", "ws", "sortBy_default", "mp", "il", "horizontalCompaction", "reverseSep", "xs", "blockG", "buildBlockGraph", "borderType", "iterate", "setXsFunc", "nextNodesFunc", "stack", "elem", "visited", "pass1", "acc", "e", "pass2", "min", "node", "blockGraph", "Graph", "graphLabel", "sepFn", "sep", "vRoot", "uRoot", "prevMax", "findSmallestWidthAlignment", "xss", "minBy_default", "values_default", "max", "forIn_default", "x", "halfWidth", "width", "alignCoordinates", "alignTo", "alignToVals", "alignToMin", "min_default", "alignToMax", "max_default", "vert", "horiz", "alignment", "delta", "xsVals", "mapValues_default", "balance", "ignore", "map_default", "positionX", "buildLayerMatrix", "merge_default", "adjustedLayering", "inner", "smallestWidth", "nodeSep", "edgeSep", "vLabel", "wLabel", "sum", "position", "g", "asNonCompoundGraph", "positionY", "forOwn_default", "positionX", "x", "v", "layering", "buildLayerMatrix", "rankSep", "prevY", "forEach_default", "layer", "maxHeight", "max_default", "map_default", "layout", "g", "opts", "time", "notime", "layoutGraph", "buildLayoutGraph", "runLayout", "updateInputGraph", "makeSpaceForEdgeLabels", "removeSelfEdges", "run", "rank", "asNonCompoundGraph", "injectEdgeLabelProxies", "removeEmptyRanks", "cleanup", "normalizeRanks", "assignRankMinMax", "removeEdgeLabelProxies", "parentDummyChains", "addBorderSegments", "order", "insertSelfEdges", "adjust", "position", "positionSelfEdges", "removeBorderNodes", "undo", "fixupEdgeLabelCoords", "translateGraph", "assignNodeIntersects", "reversePointsForReversedEdges", "inputGraph", "forEach_default", "v", "inputLabel", "layoutLabel", "e", "has_default", "graphNumAttrs", "graphDefaults", "graphAttrs", "nodeNumAttrs", "nodeDefaults", "edgeNumAttrs", "edgeDefaults", "edgeAttrs", "Graph", "graph", "canonicalize", "merge_default", "selectNumberAttrs", "pick_default", "node", "defaults_default", "edge", "w", "label", "addDummyNode", "maxRank", "max_default", "minX", "maxX", "minY", "maxY", "graphLabel", "marginX", "marginY", "getExtremes", "attrs", "x", "y", "h", "nodeV", "nodeW", "p1", "p2", "intersectRect", "t", "b", "l", "last_default", "r", "layers", "buildLayerMatrix", "layer", "orderShift", "i", "selfEdge", "selfNode", "dx", "dy", "obj", "mapValues_default", "newAttrs", "k"] +} diff --git a/public/chunk-NULBODSD.min.js b/public/chunk-NULBODSD.min.js new file mode 100644 index 0000000..e880cb7 --- /dev/null +++ b/public/chunk-NULBODSD.min.js @@ -0,0 +1,7 @@ +import{$a as J1,Fa as Q1,Ka as zt,Ya as Z1,Za as qt,db as Ht,eb as Wt,fb as Qt,gb as Zt,h as V1,hb as Jt,ib as $t,jb as te}from"./chunk-DJFTDYIK.min.js";var ft=function(){var e=function(h1,a,o,h){for(o=o||{},h=h1.length;h--;o[h1[h]]=a);return o},u=[1,4],i=[1,3],n=[1,5],c=[1,8,9,10,11,27,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],p=[2,2],l=[1,13],U=[1,14],F=[1,15],O=[1,16],z=[1,23],c1=[1,25],p1=[1,26],f1=[1,27],S=[1,49],k=[1,48],o1=[1,29],w1=[1,30],U1=[1,31],G1=[1,32],M1=[1,33],B=[1,44],x=[1,46],y=[1,42],m=[1,47],v=[1,43],V=[1,50],L=[1,45],I=[1,51],R=[1,52],K1=[1,34],j1=[1,35],Y1=[1,36],X1=[1,37],I1=[1,57],b=[1,8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],H=[1,61],W=[1,60],Q=[1,62],z1=[8,9,11,73,75],k1=[1,88],b1=[1,93],g1=[1,92],D1=[1,89],F1=[1,85],T1=[1,91],C1=[1,87],S1=[1,94],_1=[1,90],B1=[1,95],x1=[1,86],q1=[8,9,10,11,73,75],N=[8,9,10,11,44,73,75],M=[8,9,10,11,29,42,44,46,48,50,52,54,56,58,61,63,65,66,68,73,75,86,99,102,103,106,108,111,112,113],Et=[8,9,11,42,58,73,75,86,99,102,103,106,108,111,112,113],R1=[42,58,86,99,102,103,106,108,111,112,113],kt=[1,121],bt=[1,120],gt=[1,128],Dt=[1,142],Ft=[1,143],Tt=[1,144],Ct=[1,145],St=[1,130],_t=[1,132],Bt=[1,136],xt=[1,137],yt=[1,138],mt=[1,139],vt=[1,140],Vt=[1,141],Lt=[1,146],It=[1,147],Rt=[1,126],Nt=[1,127],Ot=[1,134],Pt=[1,129],wt=[1,133],Ut=[1,131],nt=[8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],Gt=[1,149],T=[8,9,11],K=[8,9,10,11,14,42,58,86,102,103,106,108,111,112,113],f=[1,169],P=[1,165],w=[1,166],A=[1,170],d=[1,167],E=[1,168],y1=[75,113,116],g=[8,9,10,11,12,14,27,29,32,42,58,73,81,82,83,84,85,86,87,102,106,108,111,112,113],Mt=[10,103],l1=[31,47,49,51,53,55,60,62,64,65,67,69,113,114,115],Z=[1,235],J=[1,233],$=[1,237],t1=[1,231],e1=[1,232],s1=[1,234],u1=[1,236],i1=[1,238],m1=[1,255],Kt=[8,9,11,103],q=[8,9,10,11,58,81,102,103,106,107,108,109],at={trace:function(){},yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeperator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,verticeStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,link:39,node:40,styledVertex:41,AMP:42,vertex:43,STYLE_SEPARATOR:44,idString:45,DOUBLECIRCLESTART:46,DOUBLECIRCLEEND:47,PS:48,PE:49,"(-":50,"-)":51,STADIUMSTART:52,STADIUMEND:53,SUBROUTINESTART:54,SUBROUTINEEND:55,VERTEX_WITH_PROPS_START:56,"NODE_STRING[field]":57,COLON:58,"NODE_STRING[value]":59,PIPE:60,CYLINDERSTART:61,CYLINDEREND:62,DIAMOND_START:63,DIAMOND_STOP:64,TAGEND:65,TRAPSTART:66,TRAPEND:67,INVTRAPSTART:68,INVTRAPEND:69,linkStatement:70,arrowText:71,TESTSTR:72,START_LINK:73,edgeText:74,LINK:75,edgeTextToken:76,STR:77,MD_STR:78,textToken:79,keywords:80,STYLE:81,LINKSTYLE:82,CLASSDEF:83,CLASS:84,CLICK:85,DOWN:86,UP:87,textNoTagsToken:88,stylesOpt:89,"idString[vertex]":90,"idString[class]":91,CALLBACKNAME:92,CALLBACKARGS:93,HREF:94,LINK_TARGET:95,"STR[link]":96,"STR[tooltip]":97,alphaNum:98,DEFAULT:99,numList:100,INTERPOLATE:101,NUM:102,COMMA:103,style:104,styleComponent:105,NODE_STRING:106,UNIT:107,BRKT:108,PCT:109,idStringToken:110,MINUS:111,MULT:112,UNICODE_TEXT:113,TEXT:114,TAGSTART:115,EDGE_TEXT:116,alphaNumToken:117,direction_tb:118,direction_bt:119,direction_rl:120,direction_lr:121,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",42:"AMP",44:"STYLE_SEPARATOR",46:"DOUBLECIRCLESTART",47:"DOUBLECIRCLEEND",48:"PS",49:"PE",50:"(-",51:"-)",52:"STADIUMSTART",53:"STADIUMEND",54:"SUBROUTINESTART",55:"SUBROUTINEEND",56:"VERTEX_WITH_PROPS_START",57:"NODE_STRING[field]",58:"COLON",59:"NODE_STRING[value]",60:"PIPE",61:"CYLINDERSTART",62:"CYLINDEREND",63:"DIAMOND_START",64:"DIAMOND_STOP",65:"TAGEND",66:"TRAPSTART",67:"TRAPEND",68:"INVTRAPSTART",69:"INVTRAPEND",72:"TESTSTR",73:"START_LINK",75:"LINK",77:"STR",78:"MD_STR",81:"STYLE",82:"LINKSTYLE",83:"CLASSDEF",84:"CLASS",85:"CLICK",86:"DOWN",87:"UP",90:"idString[vertex]",91:"idString[class]",92:"CALLBACKNAME",93:"CALLBACKARGS",94:"HREF",95:"LINK_TARGET",96:"STR[link]",97:"STR[tooltip]",99:"DEFAULT",101:"INTERPOLATE",102:"NUM",103:"COMMA",106:"NODE_STRING",107:"UNIT",108:"BRKT",109:"PCT",111:"MINUS",112:"MULT",113:"UNICODE_TEXT",114:"TEXT",115:"TAGSTART",116:"EDGE_TEXT",118:"direction_tb",119:"direction_bt",120:"direction_rl",121:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[20,3],[20,4],[20,2],[20,1],[40,1],[40,5],[41,1],[41,3],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,8],[43,4],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,4],[43,4],[43,1],[39,2],[39,3],[39,3],[39,1],[39,3],[74,1],[74,2],[74,1],[74,1],[70,1],[71,3],[30,1],[30,2],[30,1],[30,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[100,1],[100,3],[89,1],[89,3],[104,1],[104,2],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[79,1],[79,1],[79,1],[79,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[76,1],[76,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[45,1],[45,2],[98,1],[98,2],[33,1],[33,1],[33,1],[33,1]],performAction:function(a,o,h,r,C,t,N1){var s=t.length-1;switch(C){case 2:this.$=[];break;case 3:(!Array.isArray(t[s])||t[s].length>0)&&t[s-1].push(t[s]),this.$=t[s-1];break;case 4:case 176:this.$=t[s];break;case 11:r.setDirection("TB"),this.$="TB";break;case 12:r.setDirection(t[s-1]),this.$=t[s-1];break;case 27:this.$=t[s-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=r.addSubGraph(t[s-6],t[s-1],t[s-4]);break;case 34:this.$=r.addSubGraph(t[s-3],t[s-1],t[s-3]);break;case 35:this.$=r.addSubGraph(void 0,t[s-1],void 0);break;case 37:this.$=t[s].trim(),r.setAccTitle(this.$);break;case 38:case 39:this.$=t[s].trim(),r.setAccDescription(this.$);break;case 43:r.addLink(t[s-2].stmt,t[s],t[s-1]),this.$={stmt:t[s],nodes:t[s].concat(t[s-2].nodes)};break;case 44:r.addLink(t[s-3].stmt,t[s-1],t[s-2]),this.$={stmt:t[s-1],nodes:t[s-1].concat(t[s-3].nodes)};break;case 45:this.$={stmt:t[s-1],nodes:t[s-1]};break;case 46:this.$={stmt:t[s],nodes:t[s]};break;case 47:this.$=[t[s]];break;case 48:this.$=t[s-4].concat(t[s]);break;case 49:this.$=t[s];break;case 50:this.$=t[s-2],r.setClass(t[s-2],t[s]);break;case 51:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"square");break;case 52:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"doublecircle");break;case 53:this.$=t[s-5],r.addVertex(t[s-5],t[s-2],"circle");break;case 54:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"ellipse");break;case 55:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"stadium");break;case 56:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"subroutine");break;case 57:this.$=t[s-7],r.addVertex(t[s-7],t[s-1],"rect",void 0,void 0,void 0,Object.fromEntries([[t[s-5],t[s-3]]]));break;case 58:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"cylinder");break;case 59:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"round");break;case 60:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"diamond");break;case 61:this.$=t[s-5],r.addVertex(t[s-5],t[s-2],"hexagon");break;case 62:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"odd");break;case 63:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"trapezoid");break;case 64:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"inv_trapezoid");break;case 65:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"lean_right");break;case 66:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"lean_left");break;case 67:this.$=t[s],r.addVertex(t[s]);break;case 68:t[s-1].text=t[s],this.$=t[s-1];break;case 69:case 70:t[s-2].text=t[s-1],this.$=t[s-2];break;case 71:this.$=t[s];break;case 72:var j=r.destructLink(t[s],t[s-2]);this.$={type:j.type,stroke:j.stroke,length:j.length,text:t[s-1]};break;case 73:this.$={text:t[s],type:"text"};break;case 74:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 75:this.$={text:t[s],type:"string"};break;case 76:this.$={text:t[s],type:"markdown"};break;case 77:var j=r.destructLink(t[s]);this.$={type:j.type,stroke:j.stroke,length:j.length};break;case 78:this.$=t[s-1];break;case 79:this.$={text:t[s],type:"text"};break;case 80:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 81:this.$={text:t[s],type:"string"};break;case 82:case 97:this.$={text:t[s],type:"markdown"};break;case 94:this.$={text:t[s],type:"text"};break;case 95:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 96:this.$={text:t[s],type:"text"};break;case 98:this.$=t[s-4],r.addClass(t[s-2],t[s]);break;case 99:this.$=t[s-4],r.setClass(t[s-2],t[s]);break;case 100:case 108:this.$=t[s-1],r.setClickEvent(t[s-1],t[s]);break;case 101:case 109:this.$=t[s-3],r.setClickEvent(t[s-3],t[s-2]),r.setTooltip(t[s-3],t[s]);break;case 102:this.$=t[s-2],r.setClickEvent(t[s-2],t[s-1],t[s]);break;case 103:this.$=t[s-4],r.setClickEvent(t[s-4],t[s-3],t[s-2]),r.setTooltip(t[s-4],t[s]);break;case 104:this.$=t[s-2],r.setLink(t[s-2],t[s]);break;case 105:this.$=t[s-4],r.setLink(t[s-4],t[s-2]),r.setTooltip(t[s-4],t[s]);break;case 106:this.$=t[s-4],r.setLink(t[s-4],t[s-2],t[s]);break;case 107:this.$=t[s-6],r.setLink(t[s-6],t[s-4],t[s]),r.setTooltip(t[s-6],t[s-2]);break;case 110:this.$=t[s-1],r.setLink(t[s-1],t[s]);break;case 111:this.$=t[s-3],r.setLink(t[s-3],t[s-2]),r.setTooltip(t[s-3],t[s]);break;case 112:this.$=t[s-3],r.setLink(t[s-3],t[s-2],t[s]);break;case 113:this.$=t[s-5],r.setLink(t[s-5],t[s-4],t[s]),r.setTooltip(t[s-5],t[s-2]);break;case 114:this.$=t[s-4],r.addVertex(t[s-2],void 0,void 0,t[s]);break;case 115:this.$=t[s-4],r.updateLink([t[s-2]],t[s]);break;case 116:this.$=t[s-4],r.updateLink(t[s-2],t[s]);break;case 117:this.$=t[s-8],r.updateLinkInterpolate([t[s-6]],t[s-2]),r.updateLink([t[s-6]],t[s]);break;case 118:this.$=t[s-8],r.updateLinkInterpolate(t[s-6],t[s-2]),r.updateLink(t[s-6],t[s]);break;case 119:this.$=t[s-6],r.updateLinkInterpolate([t[s-4]],t[s]);break;case 120:this.$=t[s-6],r.updateLinkInterpolate(t[s-4],t[s]);break;case 121:case 123:this.$=[t[s]];break;case 122:case 124:t[s-2].push(t[s]),this.$=t[s-2];break;case 126:this.$=t[s-1]+t[s];break;case 174:this.$=t[s];break;case 175:this.$=t[s-1]+""+t[s];break;case 177:this.$=t[s-1]+""+t[s];break;case 178:this.$={stmt:"dir",value:"TB"};break;case 179:this.$={stmt:"dir",value:"BT"};break;case 180:this.$={stmt:"dir",value:"RL"};break;case 181:this.$={stmt:"dir",value:"LR"};break}},table:[{3:1,4:2,9:u,10:i,12:n},{1:[3]},e(c,p,{5:6}),{4:7,9:u,10:i,12:n},{4:8,9:u,10:i,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:l,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,33:24,34:c1,36:p1,38:f1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},e(c,[2,9]),e(c,[2,10]),e(c,[2,11]),{8:[1,54],9:[1,55],10:I1,15:53,18:56},e(b,[2,3]),e(b,[2,4]),e(b,[2,5]),e(b,[2,6]),e(b,[2,7]),e(b,[2,8]),{8:H,9:W,11:Q,21:58,39:59,70:63,73:[1,64],75:[1,65]},{8:H,9:W,11:Q,21:66},{8:H,9:W,11:Q,21:67},{8:H,9:W,11:Q,21:68},{8:H,9:W,11:Q,21:69},{8:H,9:W,11:Q,21:70},{8:H,9:W,10:[1,71],11:Q,21:72},e(b,[2,36]),{35:[1,73]},{37:[1,74]},e(b,[2,39]),e(z1,[2,46],{18:75,10:I1}),{10:[1,76]},{10:[1,77]},{10:[1,78]},{10:[1,79]},{14:k1,42:b1,58:g1,77:[1,83],86:D1,92:[1,80],94:[1,81],98:82,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1,117:84},e(b,[2,178]),e(b,[2,179]),e(b,[2,180]),e(b,[2,181]),e(q1,[2,47]),e(q1,[2,49],{44:[1,96]}),e(N,[2,67],{110:109,29:[1,97],42:S,46:[1,98],48:[1,99],50:[1,100],52:[1,101],54:[1,102],56:[1,103],58:k,61:[1,104],63:[1,105],65:[1,106],66:[1,107],68:[1,108],86:B,99:x,102:y,103:m,106:v,108:V,111:L,112:I,113:R}),e(M,[2,174]),e(M,[2,135]),e(M,[2,136]),e(M,[2,137]),e(M,[2,138]),e(M,[2,139]),e(M,[2,140]),e(M,[2,141]),e(M,[2,142]),e(M,[2,143]),e(M,[2,144]),e(M,[2,145]),e(c,[2,12]),e(c,[2,18]),e(c,[2,19]),{9:[1,110]},e(Et,[2,26],{18:111,10:I1}),e(b,[2,27]),{40:112,41:38,42:S,43:39,45:40,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},e(b,[2,40]),e(b,[2,41]),e(b,[2,42]),e(R1,[2,71],{71:113,60:[1,115],72:[1,114]}),{74:116,76:117,77:[1,118],78:[1,119],113:kt,116:bt},e([42,58,60,72,86,99,102,103,106,108,111,112,113],[2,77]),e(b,[2,28]),e(b,[2,29]),e(b,[2,30]),e(b,[2,31]),e(b,[2,32]),{10:gt,12:Dt,14:Ft,27:Tt,28:122,32:Ct,42:St,58:_t,73:Bt,77:[1,124],78:[1,125],80:135,81:xt,82:yt,83:mt,84:vt,85:Vt,86:Lt,87:It,88:123,102:Rt,106:Nt,108:Ot,111:Pt,112:wt,113:Ut},e(nt,p,{5:148}),e(b,[2,37]),e(b,[2,38]),e(z1,[2,45],{42:Gt}),{42:S,45:150,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{99:[1,151],100:152,102:[1,153]},{42:S,45:154,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{42:S,45:155,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},e(T,[2,100],{10:[1,156],93:[1,157]}),{77:[1,158]},e(T,[2,108],{117:160,10:[1,159],14:k1,42:b1,58:g1,86:D1,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1}),e(T,[2,110],{10:[1,161]}),e(K,[2,176]),e(K,[2,163]),e(K,[2,164]),e(K,[2,165]),e(K,[2,166]),e(K,[2,167]),e(K,[2,168]),e(K,[2,169]),e(K,[2,170]),e(K,[2,171]),e(K,[2,172]),e(K,[2,173]),{42:S,45:162,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{30:163,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:171,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:173,48:[1,172],65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:174,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:175,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:176,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{106:[1,177]},{30:178,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:179,63:[1,180],65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:181,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:182,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:183,65:f,77:P,78:w,79:164,113:A,114:d,115:E},e(M,[2,175]),e(c,[2,20]),e(Et,[2,25]),e(z1,[2,43],{18:184,10:I1}),e(R1,[2,68],{10:[1,185]}),{10:[1,186]},{30:187,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{75:[1,188],76:189,113:kt,116:bt},e(y1,[2,73]),e(y1,[2,75]),e(y1,[2,76]),e(y1,[2,161]),e(y1,[2,162]),{8:H,9:W,10:gt,11:Q,12:Dt,14:Ft,21:191,27:Tt,29:[1,190],32:Ct,42:St,58:_t,73:Bt,80:135,81:xt,82:yt,83:mt,84:vt,85:Vt,86:Lt,87:It,88:192,102:Rt,106:Nt,108:Ot,111:Pt,112:wt,113:Ut},e(g,[2,94]),e(g,[2,96]),e(g,[2,97]),e(g,[2,150]),e(g,[2,151]),e(g,[2,152]),e(g,[2,153]),e(g,[2,154]),e(g,[2,155]),e(g,[2,156]),e(g,[2,157]),e(g,[2,158]),e(g,[2,159]),e(g,[2,160]),e(g,[2,83]),e(g,[2,84]),e(g,[2,85]),e(g,[2,86]),e(g,[2,87]),e(g,[2,88]),e(g,[2,89]),e(g,[2,90]),e(g,[2,91]),e(g,[2,92]),e(g,[2,93]),{6:11,7:12,8:l,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,32:[1,193],33:24,34:c1,36:p1,38:f1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},{10:I1,18:194},{10:[1,195],42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:109,111:L,112:I,113:R},{10:[1,196]},{10:[1,197],103:[1,198]},e(Mt,[2,121]),{10:[1,199],42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:109,111:L,112:I,113:R},{10:[1,200],42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:109,111:L,112:I,113:R},{77:[1,201]},e(T,[2,102],{10:[1,202]}),e(T,[2,104],{10:[1,203]}),{77:[1,204]},e(K,[2,177]),{77:[1,205],95:[1,206]},e(q1,[2,50],{110:109,42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,111:L,112:I,113:R}),{31:[1,207],65:f,79:208,113:A,114:d,115:E},e(l1,[2,79]),e(l1,[2,81]),e(l1,[2,82]),e(l1,[2,146]),e(l1,[2,147]),e(l1,[2,148]),e(l1,[2,149]),{47:[1,209],65:f,79:208,113:A,114:d,115:E},{30:210,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{49:[1,211],65:f,79:208,113:A,114:d,115:E},{51:[1,212],65:f,79:208,113:A,114:d,115:E},{53:[1,213],65:f,79:208,113:A,114:d,115:E},{55:[1,214],65:f,79:208,113:A,114:d,115:E},{58:[1,215]},{62:[1,216],65:f,79:208,113:A,114:d,115:E},{64:[1,217],65:f,79:208,113:A,114:d,115:E},{30:218,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{31:[1,219],65:f,79:208,113:A,114:d,115:E},{65:f,67:[1,220],69:[1,221],79:208,113:A,114:d,115:E},{65:f,67:[1,223],69:[1,222],79:208,113:A,114:d,115:E},e(z1,[2,44],{42:Gt}),e(R1,[2,70]),e(R1,[2,69]),{60:[1,224],65:f,79:208,113:A,114:d,115:E},e(R1,[2,72]),e(y1,[2,74]),{30:225,65:f,77:P,78:w,79:164,113:A,114:d,115:E},e(nt,p,{5:226}),e(g,[2,95]),e(b,[2,35]),{41:227,42:S,43:39,45:40,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{10:Z,58:J,81:$,89:228,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{10:Z,58:J,81:$,89:239,101:[1,240],102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{10:Z,58:J,81:$,89:241,101:[1,242],102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{102:[1,243]},{10:Z,58:J,81:$,89:244,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{42:S,45:245,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},e(T,[2,101]),{77:[1,246]},{77:[1,247],95:[1,248]},e(T,[2,109]),e(T,[2,111],{10:[1,249]}),e(T,[2,112]),e(N,[2,51]),e(l1,[2,80]),e(N,[2,52]),{49:[1,250],65:f,79:208,113:A,114:d,115:E},e(N,[2,59]),e(N,[2,54]),e(N,[2,55]),e(N,[2,56]),{106:[1,251]},e(N,[2,58]),e(N,[2,60]),{64:[1,252],65:f,79:208,113:A,114:d,115:E},e(N,[2,62]),e(N,[2,63]),e(N,[2,65]),e(N,[2,64]),e(N,[2,66]),e([10,42,58,86,99,102,103,106,108,111,112,113],[2,78]),{31:[1,253],65:f,79:208,113:A,114:d,115:E},{6:11,7:12,8:l,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,32:[1,254],33:24,34:c1,36:p1,38:f1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},e(q1,[2,48]),e(T,[2,114],{103:m1}),e(Kt,[2,123],{105:256,10:Z,58:J,81:$,102:t1,106:e1,107:s1,108:u1,109:i1}),e(q,[2,125]),e(q,[2,127]),e(q,[2,128]),e(q,[2,129]),e(q,[2,130]),e(q,[2,131]),e(q,[2,132]),e(q,[2,133]),e(q,[2,134]),e(T,[2,115],{103:m1}),{10:[1,257]},e(T,[2,116],{103:m1}),{10:[1,258]},e(Mt,[2,122]),e(T,[2,98],{103:m1}),e(T,[2,99],{110:109,42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,111:L,112:I,113:R}),e(T,[2,103]),e(T,[2,105],{10:[1,259]}),e(T,[2,106]),{95:[1,260]},{49:[1,261]},{60:[1,262]},{64:[1,263]},{8:H,9:W,11:Q,21:264},e(b,[2,34]),{10:Z,58:J,81:$,102:t1,104:265,105:230,106:e1,107:s1,108:u1,109:i1},e(q,[2,126]),{14:k1,42:b1,58:g1,86:D1,98:266,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1,117:84},{14:k1,42:b1,58:g1,86:D1,98:267,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1,117:84},{95:[1,268]},e(T,[2,113]),e(N,[2,53]),{30:269,65:f,77:P,78:w,79:164,113:A,114:d,115:E},e(N,[2,61]),e(nt,p,{5:270}),e(Kt,[2,124],{105:256,10:Z,58:J,81:$,102:t1,106:e1,107:s1,108:u1,109:i1}),e(T,[2,119],{117:160,10:[1,271],14:k1,42:b1,58:g1,86:D1,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1}),e(T,[2,120],{117:160,10:[1,272],14:k1,42:b1,58:g1,86:D1,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1}),e(T,[2,107]),{31:[1,273],65:f,79:208,113:A,114:d,115:E},{6:11,7:12,8:l,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,32:[1,274],33:24,34:c1,36:p1,38:f1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},{10:Z,58:J,81:$,89:275,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{10:Z,58:J,81:$,89:276,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},e(N,[2,57]),e(b,[2,33]),e(T,[2,117],{103:m1}),e(T,[2,118],{103:m1})],defaultActions:{},parseError:function(a,o){if(o.recoverable)this.trace(a);else{var h=new Error(a);throw h.hash=o,h}},parse:function(a){var o=this,h=[0],r=[],C=[null],t=[],N1=this.table,s="",j=0,jt=0,Ie=2,Yt=1,Re=t.slice.call(arguments,1),_=Object.create(this.lexer),A1={yy:{}};for(var ot in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ot)&&(A1.yy[ot]=this.yy[ot]);_.setInput(a,A1.yy),A1.yy.lexer=_,A1.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var lt=_.yylloc;t.push(lt);var Ne=_.options&&_.options.ranges;typeof A1.yy.parseError=="function"?this.parseError=A1.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Oe(){var n1;return n1=r.pop()||_.lex()||Yt,typeof n1!="number"&&(n1 instanceof Array&&(r=n1,n1=r.pop()),n1=o.symbols_[n1]||n1),n1}for(var G,d1,Y,ht,v1={},H1,r1,Xt,W1;;){if(d1=h[h.length-1],this.defaultActions[d1]?Y=this.defaultActions[d1]:((G===null||typeof G>"u")&&(G=Oe()),Y=N1[d1]&&N1[d1][G]),typeof Y>"u"||!Y.length||!Y[0]){var pt="";W1=[];for(H1 in N1[d1])this.terminals_[H1]&&H1>Ie&&W1.push("'"+this.terminals_[H1]+"'");_.showPosition?pt="Parse error on line "+(j+1)+`: +`+_.showPosition()+` +Expecting `+W1.join(", ")+", got '"+(this.terminals_[G]||G)+"'":pt="Parse error on line "+(j+1)+": Unexpected "+(G==Yt?"end of input":"'"+(this.terminals_[G]||G)+"'"),this.parseError(pt,{text:_.match,token:this.terminals_[G]||G,line:_.yylineno,loc:lt,expected:W1})}if(Y[0]instanceof Array&&Y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+d1+", token: "+G);switch(Y[0]){case 1:h.push(G),C.push(_.yytext),t.push(_.yylloc),h.push(Y[1]),G=null,jt=_.yyleng,s=_.yytext,j=_.yylineno,lt=_.yylloc;break;case 2:if(r1=this.productions_[Y[1]][1],v1.$=C[C.length-r1],v1._$={first_line:t[t.length-(r1||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(r1||1)].first_column,last_column:t[t.length-1].last_column},Ne&&(v1._$.range=[t[t.length-(r1||1)].range[0],t[t.length-1].range[1]]),ht=this.performAction.apply(v1,[s,jt,j,A1.yy,Y[1],C,t].concat(Re)),typeof ht<"u")return ht;r1&&(h=h.slice(0,-1*r1*2),C=C.slice(0,-1*r1),t=t.slice(0,-1*r1)),h.push(this.productions_[Y[1]][0]),C.push(v1.$),t.push(v1._$),Xt=N1[h[h.length-2]][h[h.length-1]],h.push(Xt);break;case 3:return!0}}return!0}},Le=function(){var h1={EOF:1,parseError:function(o,h){if(this.yy.parser)this.yy.parser.parseError(o,h);else throw new Error(o)},setInput:function(a,o){return this.yy=o||this.yy||{},this._input=a,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var o=a.match(/(?:\r\n?|\n).*/g);return o?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var o=a.length,h=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-o),this.offset-=o;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),h.length-1&&(this.yylineno-=h.length-1);var C=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:h?(h.length===r.length?this.yylloc.first_column:0)+r[r.length-h.length].length-h[0].length:this.yylloc.first_column-o},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-o]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),o=new Array(a.length+1).join("-");return a+this.upcomingInput()+` +`+o+"^"},test_match:function(a,o){var h,r,C;if(this.options.backtrack_lexer&&(C={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(C.yylloc.range=this.yylloc.range.slice(0))),r=a[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+a[0].length},this.yytext+=a[0],this.match+=a[0],this.matches=a,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(a[0].length),this.matched+=a[0],h=this.performAction.call(this,this.yy,this,o,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),h)return h;if(this._backtrack){for(var t in C)this[t]=C[t];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,o,h,r;this._more||(this.yytext="",this.match="");for(var C=this._currentRules(),t=0;to[0].length)){if(o=h,r=t,this.options.backtrack_lexer){if(a=this.test_match(h,C[t]),a!==!1)return a;if(this._backtrack){o=!1;continue}else return!1}else if(!this.options.flex)break}return o?(a=this.test_match(o,C[r]),a!==!1?a:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var o=this.next();return o||this.lex()},begin:function(o){this.conditionStack.push(o)},popState:function(){var o=this.conditionStack.length-1;return o>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(o){return o=this.conditionStack.length-1-Math.abs(o||0),o>=0?this.conditionStack[o]:"INITIAL"},pushState:function(o){this.begin(o)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(o,h,r,C){switch(r){case 0:return this.begin("acc_title"),34;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),36;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:this.begin("callbackname");break;case 8:this.popState();break;case 9:this.popState(),this.begin("callbackargs");break;case 10:return 92;case 11:this.popState();break;case 12:return 93;case 13:return"MD_STR";case 14:this.popState();break;case 15:this.begin("md_string");break;case 16:return"STR";case 17:this.popState();break;case 18:this.pushState("string");break;case 19:return 81;case 20:return 99;case 21:return 82;case 22:return 101;case 23:return 83;case 24:return 84;case 25:return 94;case 26:this.begin("click");break;case 27:this.popState();break;case 28:return 85;case 29:return o.lex.firstGraph()&&this.begin("dir"),12;case 30:return o.lex.firstGraph()&&this.begin("dir"),12;case 31:return o.lex.firstGraph()&&this.begin("dir"),12;case 32:return 27;case 33:return 32;case 34:return 95;case 35:return 95;case 36:return 95;case 37:return 95;case 38:return this.popState(),13;case 39:return this.popState(),14;case 40:return this.popState(),14;case 41:return this.popState(),14;case 42:return this.popState(),14;case 43:return this.popState(),14;case 44:return this.popState(),14;case 45:return this.popState(),14;case 46:return this.popState(),14;case 47:return this.popState(),14;case 48:return this.popState(),14;case 49:return 118;case 50:return 119;case 51:return 120;case 52:return 121;case 53:return 102;case 54:return 108;case 55:return 44;case 56:return 58;case 57:return 42;case 58:return 8;case 59:return 103;case 60:return 112;case 61:return this.popState(),75;case 62:return this.pushState("edgeText"),73;case 63:return 116;case 64:return this.popState(),75;case 65:return this.pushState("thickEdgeText"),73;case 66:return 116;case 67:return this.popState(),75;case 68:return this.pushState("dottedEdgeText"),73;case 69:return 116;case 70:return 75;case 71:return this.popState(),51;case 72:return"TEXT";case 73:return this.pushState("ellipseText"),50;case 74:return this.popState(),53;case 75:return this.pushState("text"),52;case 76:return this.popState(),55;case 77:return this.pushState("text"),54;case 78:return 56;case 79:return this.pushState("text"),65;case 80:return this.popState(),62;case 81:return this.pushState("text"),61;case 82:return this.popState(),47;case 83:return this.pushState("text"),46;case 84:return this.popState(),67;case 85:return this.popState(),69;case 86:return 114;case 87:return this.pushState("trapText"),66;case 88:return this.pushState("trapText"),68;case 89:return 115;case 90:return 65;case 91:return 87;case 92:return"SEP";case 93:return 86;case 94:return 112;case 95:return 108;case 96:return 42;case 97:return 106;case 98:return 111;case 99:return 113;case 100:return this.popState(),60;case 101:return this.pushState("text"),60;case 102:return this.popState(),49;case 103:return this.pushState("text"),48;case 104:return this.popState(),31;case 105:return this.pushState("text"),29;case 106:return this.popState(),64;case 107:return this.pushState("text"),63;case 108:return"TEXT";case 109:return"QUOTE";case 110:return 9;case 111:return 10;case 112:return 11}},rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|(?!\)+))/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{callbackargs:{rules:[11,12,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},callbackname:{rules:[8,9,10,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},href:{rules:[15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},click:{rules:[15,18,27,28,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},dottedEdgeText:{rules:[15,18,67,69,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},thickEdgeText:{rules:[15,18,64,66,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},edgeText:{rules:[15,18,61,63,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},trapText:{rules:[15,18,70,73,75,77,81,83,84,85,86,87,88,101,103,105,107],inclusive:!1},ellipseText:{rules:[15,18,70,71,72,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},text:{rules:[15,18,70,73,74,75,76,77,80,81,82,83,87,88,100,101,102,103,104,105,106,107,108],inclusive:!1},vertex:{rules:[15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},dir:{rules:[15,18,38,39,40,41,42,43,44,45,46,47,48,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_descr_multiline:{rules:[5,6,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_descr:{rules:[3,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_title:{rules:[1,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},md_string:{rules:[13,14,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},string:{rules:[15,16,17,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},INITIAL:{rules:[0,2,4,7,15,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,36,37,49,50,51,52,53,54,55,56,57,58,59,60,61,62,64,65,67,68,70,73,75,77,78,79,81,83,87,88,89,90,91,92,93,94,95,96,97,98,99,101,103,105,107,109,110,111,112],inclusive:!0}}};return h1}();at.lexer=Le;function ct(){this.yy={}}return ct.prototype=at,at.Parser=ct,new ct}();ft.parser=ft;var qe=ft,Pe="flowchart-",ee=0,dt=J1(),D={},E1=[],L1={},a1=[],tt={},et={},$1=0,At=!0,X,st,ut=[],it=e=>zt.sanitizeText(e,dt),P1=function(e){let u=Object.keys(D);for(let i of u)if(D[i].id===e)return D[i].domId;return e},se=function(e,u,i,n,c,p,l={}){let U,F=e;F!==void 0&&F.trim().length!==0&&(D[F]===void 0&&(D[F]={id:F,labelType:"text",domId:Pe+F+"-"+ee,styles:[],classes:[]}),ee++,u!==void 0?(dt=J1(),U=it(u.text.trim()),D[F].labelType=u.type,U[0]==='"'&&U[U.length-1]==='"'&&(U=U.substring(1,U.length-1)),D[F].text=U):D[F].text===void 0&&(D[F].text=e),i!==void 0&&(D[F].type=i),n?.forEach(function(O){D[F].styles.push(O)}),c?.forEach(function(O){D[F].classes.push(O)}),p!==void 0&&(D[F].dir=p),D[F].props===void 0?D[F].props=l:l!==void 0&&Object.assign(D[F].props,l))},ue=function(e,u,i){let p={start:e,end:u,type:void 0,text:"",labelType:"text"};Q1.info("abc78 Got edge...",p);let l=i.text;l!==void 0&&(p.text=it(l.text.trim()),p.text[0]==='"'&&p.text[p.text.length-1]==='"'&&(p.text=p.text.substring(1,p.text.length-1)),p.labelType=l.type),i!==void 0&&(p.type=i.type,p.stroke=i.stroke,p.length=i.length),E1.push(p)},ie=function(e,u,i){Q1.info("addLink (abc78)",e,u,i);let n,c;for(n=0;n/)&&(X="LR"),X.match(/.*v/)&&(X="TB"),X==="TD"&&(X="TB")},rt=function(e,u){e.split(",").forEach(function(i){let n=i;D[n]!==void 0&&D[n].classes.push(u),tt[n]!==void 0&&tt[n].classes.push(u)})},we=function(e,u){e.split(",").forEach(function(i){u!==void 0&&(et[st==="gen-1"?P1(i):i]=it(u))})},Ue=function(e,u,i){let n=P1(e);if(J1().securityLevel!=="loose"||u===void 0)return;let c=[];if(typeof i=="string"){c=i.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let p=0;p")),c.classed("hover",!0)}).on("mouseout",function(){u.transition().duration(500).style("opacity",0),V1(this).classed("hover",!1)})};ut.push(ke);var be=function(e="gen-1"){D={},L1={},E1=[],ut=[ke],a1=[],tt={},$1=0,et={},At=!0,st=e,Ht()},ge=e=>{st=e||"gen-2"},De=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},Fe=function(e,u,i){let n=e.text.trim(),c=i.text;e===i&&i.text.match(/\s/)&&(n=void 0);function p(z){let c1={boolean:{},number:{},string:{}},p1=[],f1;return{nodeList:z.filter(function(k){let o1=typeof k;return k.stmt&&k.stmt==="dir"?(f1=k.value,!1):k.trim()===""?!1:o1 in c1?c1[o1].hasOwnProperty(k)?!1:c1[o1][k]=!0:p1.includes(k)?!1:p1.push(k)}),dir:f1}}let l=[],{nodeList:U,dir:F}=p(l.concat.apply(l,u));if(l=U,st==="gen-1")for(let z=0;z2e3)return;if(Te[O1]=u,a1[u].id===e)return{result:!0,count:0};let n=0,c=1;for(;n=0){let l=Ce(e,p);if(l.result)return{result:!0,count:c+l.count};c=c+l.count}n=n+1}return{result:!1,count:c}},Se=function(e){return Te[e]},_e=function(){O1=-1,a1.length>0&&Ce("none",a1.length-1)},Be=function(){return a1},xe=()=>At?(At=!1,!0):!1,Me=e=>{let u=e.trim(),i="arrow_open";switch(u[0]){case"<":i="arrow_point",u=u.slice(1);break;case"x":i="arrow_cross",u=u.slice(1);break;case"o":i="arrow_circle",u=u.slice(1);break}let n="normal";return u.includes("=")&&(n="thick"),u.includes(".")&&(n="dotted"),{type:i,stroke:n}},Ke=(e,u)=>{let i=u.length,n=0;for(let c=0;c{let u=e.trim(),i=u.slice(0,-1),n="arrow_open";switch(u.slice(-1)){case"x":n="arrow_cross",u[0]==="x"&&(n="double_"+n,i=i.slice(1));break;case">":n="arrow_point",u[0]==="<"&&(n="double_"+n,i=i.slice(1));break;case"o":n="arrow_circle",u[0]==="o"&&(n="double_"+n,i=i.slice(1));break}let c="normal",p=i.length-1;i[0]==="="&&(c="thick"),i[0]==="~"&&(c="invisible");let l=Ke(".",i);return l&&(c="dotted",p=l),{type:n,stroke:c,length:p}},ye=(e,u)=>{let i=je(e),n;if(u){if(n=Me(u),n.stroke!==i.stroke)return{type:"INVALID",stroke:"INVALID"};if(n.type==="arrow_open")n.type=i.type;else{if(n.type!==i.type)return{type:"INVALID",stroke:"INVALID"};n.type="double_"+n.type}return n.type==="double_arrow"&&(n.type="double_arrow_point"),n.length=i.length,n}return i},me=(e,u)=>{let i=!1;return e.forEach(n=>{n.nodes.indexOf(u)>=0&&(i=!0)}),i},ve=(e,u)=>{let i=[];return e.nodes.forEach((n,c)=>{me(u,n)||i.push(e.nodes[c])}),{nodes:i}},Ve={firstGraph:xe},Ye={defaultConfig:()=>qt.flowchart,setAccTitle:Wt,getAccTitle:Qt,getAccDescription:Jt,setAccDescription:Zt,addVertex:se,lookUpDomId:P1,addLink:ie,updateLinkInterpolate:re,updateLink:ne,addClass:ae,setDirection:ce,setClass:rt,setTooltip:we,getTooltip:le,setClickEvent:he,setLink:oe,bindFunctions:pe,getDirection:fe,getVertices:Ae,getEdges:de,getClasses:Ee,clear:be,setGen:ge,defaultStyle:De,addSubGraph:Fe,getDepthFirstPos:Se,indexNodes:_e,getSubGraphs:Be,destructLink:ye,lex:Ve,exists:me,makeUniq:ve,setDiagramTitle:$t,getDiagramTitle:te},He=Object.freeze(Object.defineProperty({__proto__:null,addClass:ae,addLink:ie,addSingleLink:ue,addSubGraph:Fe,addVertex:se,bindFunctions:pe,clear:be,default:Ye,defaultStyle:De,destructLink:ye,firstGraph:xe,getClasses:Ee,getDepthFirstPos:Se,getDirection:fe,getEdges:de,getSubGraphs:Be,getTooltip:le,getVertices:Ae,indexNodes:_e,lex:Ve,lookUpDomId:P1,setClass:rt,setClickEvent:he,setDirection:ce,setGen:ge,setLink:oe,updateLink:ne,updateLinkInterpolate:re},Symbol.toStringTag,{value:"Module"}));export{qe as a,Ye as b,He as c}; +//# sourceMappingURL=chunk-NULBODSD.min.js.map diff --git a/public/chunk-NULBODSD.min.js.map b/public/chunk-NULBODSD.min.js.map new file mode 100644 index 0000000..40f4ab8 --- /dev/null +++ b/public/chunk-NULBODSD.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/mermaid/dist/flowDb-bd9f2a91.js"], + "sourcesContent": ["import { select } from \"d3\";\nimport { I as defaultConfig, s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, q as setDiagramTitle, r as getDiagramTitle, c as getConfig, l as log, u as utils, t as clear$1, e as common } from \"./mermaid-485fd1a4.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 4], $V1 = [1, 3], $V2 = [1, 5], $V3 = [1, 8, 9, 10, 11, 27, 34, 36, 38, 42, 58, 81, 82, 83, 84, 85, 86, 99, 102, 103, 106, 108, 111, 112, 113, 118, 119, 120, 121], $V4 = [2, 2], $V5 = [1, 13], $V6 = [1, 14], $V7 = [1, 15], $V8 = [1, 16], $V9 = [1, 23], $Va = [1, 25], $Vb = [1, 26], $Vc = [1, 27], $Vd = [1, 49], $Ve = [1, 48], $Vf = [1, 29], $Vg = [1, 30], $Vh = [1, 31], $Vi = [1, 32], $Vj = [1, 33], $Vk = [1, 44], $Vl = [1, 46], $Vm = [1, 42], $Vn = [1, 47], $Vo = [1, 43], $Vp = [1, 50], $Vq = [1, 45], $Vr = [1, 51], $Vs = [1, 52], $Vt = [1, 34], $Vu = [1, 35], $Vv = [1, 36], $Vw = [1, 37], $Vx = [1, 57], $Vy = [1, 8, 9, 10, 11, 27, 32, 34, 36, 38, 42, 58, 81, 82, 83, 84, 85, 86, 99, 102, 103, 106, 108, 111, 112, 113, 118, 119, 120, 121], $Vz = [1, 61], $VA = [1, 60], $VB = [1, 62], $VC = [8, 9, 11, 73, 75], $VD = [1, 88], $VE = [1, 93], $VF = [1, 92], $VG = [1, 89], $VH = [1, 85], $VI = [1, 91], $VJ = [1, 87], $VK = [1, 94], $VL = [1, 90], $VM = [1, 95], $VN = [1, 86], $VO = [8, 9, 10, 11, 73, 75], $VP = [8, 9, 10, 11, 44, 73, 75], $VQ = [8, 9, 10, 11, 29, 42, 44, 46, 48, 50, 52, 54, 56, 58, 61, 63, 65, 66, 68, 73, 75, 86, 99, 102, 103, 106, 108, 111, 112, 113], $VR = [8, 9, 11, 42, 58, 73, 75, 86, 99, 102, 103, 106, 108, 111, 112, 113], $VS = [42, 58, 86, 99, 102, 103, 106, 108, 111, 112, 113], $VT = [1, 121], $VU = [1, 120], $VV = [1, 128], $VW = [1, 142], $VX = [1, 143], $VY = [1, 144], $VZ = [1, 145], $V_ = [1, 130], $V$ = [1, 132], $V01 = [1, 136], $V11 = [1, 137], $V21 = [1, 138], $V31 = [1, 139], $V41 = [1, 140], $V51 = [1, 141], $V61 = [1, 146], $V71 = [1, 147], $V81 = [1, 126], $V91 = [1, 127], $Va1 = [1, 134], $Vb1 = [1, 129], $Vc1 = [1, 133], $Vd1 = [1, 131], $Ve1 = [8, 9, 10, 11, 27, 32, 34, 36, 38, 42, 58, 81, 82, 83, 84, 85, 86, 99, 102, 103, 106, 108, 111, 112, 113, 118, 119, 120, 121], $Vf1 = [1, 149], $Vg1 = [8, 9, 11], $Vh1 = [8, 9, 10, 11, 14, 42, 58, 86, 102, 103, 106, 108, 111, 112, 113], $Vi1 = [1, 169], $Vj1 = [1, 165], $Vk1 = [1, 166], $Vl1 = [1, 170], $Vm1 = [1, 167], $Vn1 = [1, 168], $Vo1 = [75, 113, 116], $Vp1 = [8, 9, 10, 11, 12, 14, 27, 29, 32, 42, 58, 73, 81, 82, 83, 84, 85, 86, 87, 102, 106, 108, 111, 112, 113], $Vq1 = [10, 103], $Vr1 = [31, 47, 49, 51, 53, 55, 60, 62, 64, 65, 67, 69, 113, 114, 115], $Vs1 = [1, 235], $Vt1 = [1, 233], $Vu1 = [1, 237], $Vv1 = [1, 231], $Vw1 = [1, 232], $Vx1 = [1, 234], $Vy1 = [1, 236], $Vz1 = [1, 238], $VA1 = [1, 255], $VB1 = [8, 9, 11, 103], $VC1 = [8, 9, 10, 11, 58, 81, 102, 103, 106, 107, 108, 109];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"graphConfig\": 4, \"document\": 5, \"line\": 6, \"statement\": 7, \"SEMI\": 8, \"NEWLINE\": 9, \"SPACE\": 10, \"EOF\": 11, \"GRAPH\": 12, \"NODIR\": 13, \"DIR\": 14, \"FirstStmtSeperator\": 15, \"ending\": 16, \"endToken\": 17, \"spaceList\": 18, \"spaceListNewline\": 19, \"verticeStatement\": 20, \"separator\": 21, \"styleStatement\": 22, \"linkStyleStatement\": 23, \"classDefStatement\": 24, \"classStatement\": 25, \"clickStatement\": 26, \"subgraph\": 27, \"textNoTags\": 28, \"SQS\": 29, \"text\": 30, \"SQE\": 31, \"end\": 32, \"direction\": 33, \"acc_title\": 34, \"acc_title_value\": 35, \"acc_descr\": 36, \"acc_descr_value\": 37, \"acc_descr_multiline_value\": 38, \"link\": 39, \"node\": 40, \"styledVertex\": 41, \"AMP\": 42, \"vertex\": 43, \"STYLE_SEPARATOR\": 44, \"idString\": 45, \"DOUBLECIRCLESTART\": 46, \"DOUBLECIRCLEEND\": 47, \"PS\": 48, \"PE\": 49, \"(-\": 50, \"-)\": 51, \"STADIUMSTART\": 52, \"STADIUMEND\": 53, \"SUBROUTINESTART\": 54, \"SUBROUTINEEND\": 55, \"VERTEX_WITH_PROPS_START\": 56, \"NODE_STRING[field]\": 57, \"COLON\": 58, \"NODE_STRING[value]\": 59, \"PIPE\": 60, \"CYLINDERSTART\": 61, \"CYLINDEREND\": 62, \"DIAMOND_START\": 63, \"DIAMOND_STOP\": 64, \"TAGEND\": 65, \"TRAPSTART\": 66, \"TRAPEND\": 67, \"INVTRAPSTART\": 68, \"INVTRAPEND\": 69, \"linkStatement\": 70, \"arrowText\": 71, \"TESTSTR\": 72, \"START_LINK\": 73, \"edgeText\": 74, \"LINK\": 75, \"edgeTextToken\": 76, \"STR\": 77, \"MD_STR\": 78, \"textToken\": 79, \"keywords\": 80, \"STYLE\": 81, \"LINKSTYLE\": 82, \"CLASSDEF\": 83, \"CLASS\": 84, \"CLICK\": 85, \"DOWN\": 86, \"UP\": 87, \"textNoTagsToken\": 88, \"stylesOpt\": 89, \"idString[vertex]\": 90, \"idString[class]\": 91, \"CALLBACKNAME\": 92, \"CALLBACKARGS\": 93, \"HREF\": 94, \"LINK_TARGET\": 95, \"STR[link]\": 96, \"STR[tooltip]\": 97, \"alphaNum\": 98, \"DEFAULT\": 99, \"numList\": 100, \"INTERPOLATE\": 101, \"NUM\": 102, \"COMMA\": 103, \"style\": 104, \"styleComponent\": 105, \"NODE_STRING\": 106, \"UNIT\": 107, \"BRKT\": 108, \"PCT\": 109, \"idStringToken\": 110, \"MINUS\": 111, \"MULT\": 112, \"UNICODE_TEXT\": 113, \"TEXT\": 114, \"TAGSTART\": 115, \"EDGE_TEXT\": 116, \"alphaNumToken\": 117, \"direction_tb\": 118, \"direction_bt\": 119, \"direction_rl\": 120, \"direction_lr\": 121, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 8: \"SEMI\", 9: \"NEWLINE\", 10: \"SPACE\", 11: \"EOF\", 12: \"GRAPH\", 13: \"NODIR\", 14: \"DIR\", 27: \"subgraph\", 29: \"SQS\", 31: \"SQE\", 32: \"end\", 34: \"acc_title\", 35: \"acc_title_value\", 36: \"acc_descr\", 37: \"acc_descr_value\", 38: \"acc_descr_multiline_value\", 42: \"AMP\", 44: \"STYLE_SEPARATOR\", 46: \"DOUBLECIRCLESTART\", 47: \"DOUBLECIRCLEEND\", 48: \"PS\", 49: \"PE\", 50: \"(-\", 51: \"-)\", 52: \"STADIUMSTART\", 53: \"STADIUMEND\", 54: \"SUBROUTINESTART\", 55: \"SUBROUTINEEND\", 56: \"VERTEX_WITH_PROPS_START\", 57: \"NODE_STRING[field]\", 58: \"COLON\", 59: \"NODE_STRING[value]\", 60: \"PIPE\", 61: \"CYLINDERSTART\", 62: \"CYLINDEREND\", 63: \"DIAMOND_START\", 64: \"DIAMOND_STOP\", 65: \"TAGEND\", 66: \"TRAPSTART\", 67: \"TRAPEND\", 68: \"INVTRAPSTART\", 69: \"INVTRAPEND\", 72: \"TESTSTR\", 73: \"START_LINK\", 75: \"LINK\", 77: \"STR\", 78: \"MD_STR\", 81: \"STYLE\", 82: \"LINKSTYLE\", 83: \"CLASSDEF\", 84: \"CLASS\", 85: \"CLICK\", 86: \"DOWN\", 87: \"UP\", 90: \"idString[vertex]\", 91: \"idString[class]\", 92: \"CALLBACKNAME\", 93: \"CALLBACKARGS\", 94: \"HREF\", 95: \"LINK_TARGET\", 96: \"STR[link]\", 97: \"STR[tooltip]\", 99: \"DEFAULT\", 101: \"INTERPOLATE\", 102: \"NUM\", 103: \"COMMA\", 106: \"NODE_STRING\", 107: \"UNIT\", 108: \"BRKT\", 109: \"PCT\", 111: \"MINUS\", 112: \"MULT\", 113: \"UNICODE_TEXT\", 114: \"TEXT\", 115: \"TAGSTART\", 116: \"EDGE_TEXT\", 118: \"direction_tb\", 119: \"direction_bt\", 120: \"direction_rl\", 121: \"direction_lr\" },\n productions_: [0, [3, 2], [5, 0], [5, 2], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [4, 2], [4, 2], [4, 2], [4, 3], [16, 2], [16, 1], [17, 1], [17, 1], [17, 1], [15, 1], [15, 1], [15, 2], [19, 2], [19, 2], [19, 1], [19, 1], [18, 2], [18, 1], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 9], [7, 6], [7, 4], [7, 1], [7, 2], [7, 2], [7, 1], [21, 1], [21, 1], [21, 1], [20, 3], [20, 4], [20, 2], [20, 1], [40, 1], [40, 5], [41, 1], [41, 3], [43, 4], [43, 4], [43, 6], [43, 4], [43, 4], [43, 4], [43, 8], [43, 4], [43, 4], [43, 4], [43, 6], [43, 4], [43, 4], [43, 4], [43, 4], [43, 4], [43, 1], [39, 2], [39, 3], [39, 3], [39, 1], [39, 3], [74, 1], [74, 2], [74, 1], [74, 1], [70, 1], [71, 3], [30, 1], [30, 2], [30, 1], [30, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [28, 1], [28, 2], [28, 1], [28, 1], [24, 5], [25, 5], [26, 2], [26, 4], [26, 3], [26, 5], [26, 3], [26, 5], [26, 5], [26, 7], [26, 2], [26, 4], [26, 2], [26, 4], [26, 4], [26, 6], [22, 5], [23, 5], [23, 5], [23, 9], [23, 9], [23, 7], [23, 7], [100, 1], [100, 3], [89, 1], [89, 3], [104, 1], [104, 2], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [79, 1], [79, 1], [79, 1], [79, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [76, 1], [76, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [45, 1], [45, 2], [98, 1], [98, 2], [33, 1], [33, 1], [33, 1], [33, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 2:\n this.$ = [];\n break;\n case 3:\n if (!Array.isArray($$[$0]) || $$[$0].length > 0) {\n $$[$0 - 1].push($$[$0]);\n }\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 176:\n this.$ = $$[$0];\n break;\n case 11:\n yy.setDirection(\"TB\");\n this.$ = \"TB\";\n break;\n case 12:\n yy.setDirection($$[$0 - 1]);\n this.$ = $$[$0 - 1];\n break;\n case 27:\n this.$ = $$[$0 - 1].nodes;\n break;\n case 28:\n case 29:\n case 30:\n case 31:\n case 32:\n this.$ = [];\n break;\n case 33:\n this.$ = yy.addSubGraph($$[$0 - 6], $$[$0 - 1], $$[$0 - 4]);\n break;\n case 34:\n this.$ = yy.addSubGraph($$[$0 - 3], $$[$0 - 1], $$[$0 - 3]);\n break;\n case 35:\n this.$ = yy.addSubGraph(void 0, $$[$0 - 1], void 0);\n break;\n case 37:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 38:\n case 39:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 43:\n yy.addLink($$[$0 - 2].stmt, $$[$0], $$[$0 - 1]);\n this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0 - 2].nodes) };\n break;\n case 44:\n yy.addLink($$[$0 - 3].stmt, $$[$0 - 1], $$[$0 - 2]);\n this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1].concat($$[$0 - 3].nodes) };\n break;\n case 45:\n this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1] };\n break;\n case 46:\n this.$ = { stmt: $$[$0], nodes: $$[$0] };\n break;\n case 47:\n this.$ = [$$[$0]];\n break;\n case 48:\n this.$ = $$[$0 - 4].concat($$[$0]);\n break;\n case 49:\n this.$ = $$[$0];\n break;\n case 50:\n this.$ = $$[$0 - 2];\n yy.setClass($$[$0 - 2], $$[$0]);\n break;\n case 51:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"square\");\n break;\n case 52:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"doublecircle\");\n break;\n case 53:\n this.$ = $$[$0 - 5];\n yy.addVertex($$[$0 - 5], $$[$0 - 2], \"circle\");\n break;\n case 54:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"ellipse\");\n break;\n case 55:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"stadium\");\n break;\n case 56:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"subroutine\");\n break;\n case 57:\n this.$ = $$[$0 - 7];\n yy.addVertex($$[$0 - 7], $$[$0 - 1], \"rect\", void 0, void 0, void 0, Object.fromEntries([[$$[$0 - 5], $$[$0 - 3]]]));\n break;\n case 58:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"cylinder\");\n break;\n case 59:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"round\");\n break;\n case 60:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"diamond\");\n break;\n case 61:\n this.$ = $$[$0 - 5];\n yy.addVertex($$[$0 - 5], $$[$0 - 2], \"hexagon\");\n break;\n case 62:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"odd\");\n break;\n case 63:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"trapezoid\");\n break;\n case 64:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"inv_trapezoid\");\n break;\n case 65:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"lean_right\");\n break;\n case 66:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"lean_left\");\n break;\n case 67:\n this.$ = $$[$0];\n yy.addVertex($$[$0]);\n break;\n case 68:\n $$[$0 - 1].text = $$[$0];\n this.$ = $$[$0 - 1];\n break;\n case 69:\n case 70:\n $$[$0 - 2].text = $$[$0 - 1];\n this.$ = $$[$0 - 2];\n break;\n case 71:\n this.$ = $$[$0];\n break;\n case 72:\n var inf = yy.destructLink($$[$0], $$[$0 - 2]);\n this.$ = { \"type\": inf.type, \"stroke\": inf.stroke, \"length\": inf.length, \"text\": $$[$0 - 1] };\n break;\n case 73:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 74:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 75:\n this.$ = { text: $$[$0], type: \"string\" };\n break;\n case 76:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 77:\n var inf = yy.destructLink($$[$0]);\n this.$ = { \"type\": inf.type, \"stroke\": inf.stroke, \"length\": inf.length };\n break;\n case 78:\n this.$ = $$[$0 - 1];\n break;\n case 79:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 80:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 81:\n this.$ = { text: $$[$0], type: \"string\" };\n break;\n case 82:\n case 97:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 94:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 95:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 96:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 98:\n this.$ = $$[$0 - 4];\n yy.addClass($$[$0 - 2], $$[$0]);\n break;\n case 99:\n this.$ = $$[$0 - 4];\n yy.setClass($$[$0 - 2], $$[$0]);\n break;\n case 100:\n case 108:\n this.$ = $$[$0 - 1];\n yy.setClickEvent($$[$0 - 1], $$[$0]);\n break;\n case 101:\n case 109:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 102:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 103:\n this.$ = $$[$0 - 4];\n yy.setClickEvent($$[$0 - 4], $$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 4], $$[$0]);\n break;\n case 104:\n this.$ = $$[$0 - 2];\n yy.setLink($$[$0 - 2], $$[$0]);\n break;\n case 105:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 4], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 4], $$[$0]);\n break;\n case 106:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 4], $$[$0 - 2], $$[$0]);\n break;\n case 107:\n this.$ = $$[$0 - 6];\n yy.setLink($$[$0 - 6], $$[$0 - 4], $$[$0]);\n yy.setTooltip($$[$0 - 6], $$[$0 - 2]);\n break;\n case 110:\n this.$ = $$[$0 - 1];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 111:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 112:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]);\n break;\n case 113:\n this.$ = $$[$0 - 5];\n yy.setLink($$[$0 - 5], $$[$0 - 4], $$[$0]);\n yy.setTooltip($$[$0 - 5], $$[$0 - 2]);\n break;\n case 114:\n this.$ = $$[$0 - 4];\n yy.addVertex($$[$0 - 2], void 0, void 0, $$[$0]);\n break;\n case 115:\n this.$ = $$[$0 - 4];\n yy.updateLink([$$[$0 - 2]], $$[$0]);\n break;\n case 116:\n this.$ = $$[$0 - 4];\n yy.updateLink($$[$0 - 2], $$[$0]);\n break;\n case 117:\n this.$ = $$[$0 - 8];\n yy.updateLinkInterpolate([$$[$0 - 6]], $$[$0 - 2]);\n yy.updateLink([$$[$0 - 6]], $$[$0]);\n break;\n case 118:\n this.$ = $$[$0 - 8];\n yy.updateLinkInterpolate($$[$0 - 6], $$[$0 - 2]);\n yy.updateLink($$[$0 - 6], $$[$0]);\n break;\n case 119:\n this.$ = $$[$0 - 6];\n yy.updateLinkInterpolate([$$[$0 - 4]], $$[$0]);\n break;\n case 120:\n this.$ = $$[$0 - 6];\n yy.updateLinkInterpolate($$[$0 - 4], $$[$0]);\n break;\n case 121:\n case 123:\n this.$ = [$$[$0]];\n break;\n case 122:\n case 124:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 126:\n this.$ = $$[$0 - 1] + $$[$0];\n break;\n case 174:\n this.$ = $$[$0];\n break;\n case 175:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n case 177:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n case 178:\n this.$ = { stmt: \"dir\", value: \"TB\" };\n break;\n case 179:\n this.$ = { stmt: \"dir\", value: \"BT\" };\n break;\n case 180:\n this.$ = { stmt: \"dir\", value: \"RL\" };\n break;\n case 181:\n this.$ = { stmt: \"dir\", value: \"LR\" };\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 9: $V0, 10: $V1, 12: $V2 }, { 1: [3] }, o($V3, $V4, { 5: 6 }), { 4: 7, 9: $V0, 10: $V1, 12: $V2 }, { 4: 8, 9: $V0, 10: $V1, 12: $V2 }, { 13: [1, 9], 14: [1, 10] }, { 1: [2, 1], 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 40: 28, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 81: $Vf, 82: $Vg, 83: $Vh, 84: $Vi, 85: $Vj, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs, 118: $Vt, 119: $Vu, 120: $Vv, 121: $Vw }, o($V3, [2, 9]), o($V3, [2, 10]), o($V3, [2, 11]), { 8: [1, 54], 9: [1, 55], 10: $Vx, 15: 53, 18: 56 }, o($Vy, [2, 3]), o($Vy, [2, 4]), o($Vy, [2, 5]), o($Vy, [2, 6]), o($Vy, [2, 7]), o($Vy, [2, 8]), { 8: $Vz, 9: $VA, 11: $VB, 21: 58, 39: 59, 70: 63, 73: [1, 64], 75: [1, 65] }, { 8: $Vz, 9: $VA, 11: $VB, 21: 66 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 67 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 68 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 69 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 70 }, { 8: $Vz, 9: $VA, 10: [1, 71], 11: $VB, 21: 72 }, o($Vy, [2, 36]), { 35: [1, 73] }, { 37: [1, 74] }, o($Vy, [2, 39]), o($VC, [2, 46], { 18: 75, 10: $Vx }), { 10: [1, 76] }, { 10: [1, 77] }, { 10: [1, 78] }, { 10: [1, 79] }, { 14: $VD, 42: $VE, 58: $VF, 77: [1, 83], 86: $VG, 92: [1, 80], 94: [1, 81], 98: 82, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN, 117: 84 }, o($Vy, [2, 178]), o($Vy, [2, 179]), o($Vy, [2, 180]), o($Vy, [2, 181]), o($VO, [2, 47]), o($VO, [2, 49], { 44: [1, 96] }), o($VP, [2, 67], { 110: 109, 29: [1, 97], 42: $Vd, 46: [1, 98], 48: [1, 99], 50: [1, 100], 52: [1, 101], 54: [1, 102], 56: [1, 103], 58: $Ve, 61: [1, 104], 63: [1, 105], 65: [1, 106], 66: [1, 107], 68: [1, 108], 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 111: $Vq, 112: $Vr, 113: $Vs }), o($VQ, [2, 174]), o($VQ, [2, 135]), o($VQ, [2, 136]), o($VQ, [2, 137]), o($VQ, [2, 138]), o($VQ, [2, 139]), o($VQ, [2, 140]), o($VQ, [2, 141]), o($VQ, [2, 142]), o($VQ, [2, 143]), o($VQ, [2, 144]), o($VQ, [2, 145]), o($V3, [2, 12]), o($V3, [2, 18]), o($V3, [2, 19]), { 9: [1, 110] }, o($VR, [2, 26], { 18: 111, 10: $Vx }), o($Vy, [2, 27]), { 40: 112, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, o($Vy, [2, 40]), o($Vy, [2, 41]), o($Vy, [2, 42]), o($VS, [2, 71], { 71: 113, 60: [1, 115], 72: [1, 114] }), { 74: 116, 76: 117, 77: [1, 118], 78: [1, 119], 113: $VT, 116: $VU }, o([42, 58, 60, 72, 86, 99, 102, 103, 106, 108, 111, 112, 113], [2, 77]), o($Vy, [2, 28]), o($Vy, [2, 29]), o($Vy, [2, 30]), o($Vy, [2, 31]), o($Vy, [2, 32]), { 10: $VV, 12: $VW, 14: $VX, 27: $VY, 28: 122, 32: $VZ, 42: $V_, 58: $V$, 73: $V01, 77: [1, 124], 78: [1, 125], 80: 135, 81: $V11, 82: $V21, 83: $V31, 84: $V41, 85: $V51, 86: $V61, 87: $V71, 88: 123, 102: $V81, 106: $V91, 108: $Va1, 111: $Vb1, 112: $Vc1, 113: $Vd1 }, o($Ve1, $V4, { 5: 148 }), o($Vy, [2, 37]), o($Vy, [2, 38]), o($VC, [2, 45], { 42: $Vf1 }), { 42: $Vd, 45: 150, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, { 99: [1, 151], 100: 152, 102: [1, 153] }, { 42: $Vd, 45: 154, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, { 42: $Vd, 45: 155, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, o($Vg1, [2, 100], { 10: [1, 156], 93: [1, 157] }), { 77: [1, 158] }, o($Vg1, [2, 108], { 117: 160, 10: [1, 159], 14: $VD, 42: $VE, 58: $VF, 86: $VG, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN }), o($Vg1, [2, 110], { 10: [1, 161] }), o($Vh1, [2, 176]), o($Vh1, [2, 163]), o($Vh1, [2, 164]), o($Vh1, [2, 165]), o($Vh1, [2, 166]), o($Vh1, [2, 167]), o($Vh1, [2, 168]), o($Vh1, [2, 169]), o($Vh1, [2, 170]), o($Vh1, [2, 171]), o($Vh1, [2, 172]), o($Vh1, [2, 173]), { 42: $Vd, 45: 162, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, { 30: 163, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 171, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 173, 48: [1, 172], 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 174, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 175, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 176, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 106: [1, 177] }, { 30: 178, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 179, 63: [1, 180], 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 181, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 182, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 183, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VQ, [2, 175]), o($V3, [2, 20]), o($VR, [2, 25]), o($VC, [2, 43], { 18: 184, 10: $Vx }), o($VS, [2, 68], { 10: [1, 185] }), { 10: [1, 186] }, { 30: 187, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 75: [1, 188], 76: 189, 113: $VT, 116: $VU }, o($Vo1, [2, 73]), o($Vo1, [2, 75]), o($Vo1, [2, 76]), o($Vo1, [2, 161]), o($Vo1, [2, 162]), { 8: $Vz, 9: $VA, 10: $VV, 11: $VB, 12: $VW, 14: $VX, 21: 191, 27: $VY, 29: [1, 190], 32: $VZ, 42: $V_, 58: $V$, 73: $V01, 80: 135, 81: $V11, 82: $V21, 83: $V31, 84: $V41, 85: $V51, 86: $V61, 87: $V71, 88: 192, 102: $V81, 106: $V91, 108: $Va1, 111: $Vb1, 112: $Vc1, 113: $Vd1 }, o($Vp1, [2, 94]), o($Vp1, [2, 96]), o($Vp1, [2, 97]), o($Vp1, [2, 150]), o($Vp1, [2, 151]), o($Vp1, [2, 152]), o($Vp1, [2, 153]), o($Vp1, [2, 154]), o($Vp1, [2, 155]), o($Vp1, [2, 156]), o($Vp1, [2, 157]), o($Vp1, [2, 158]), o($Vp1, [2, 159]), o($Vp1, [2, 160]), o($Vp1, [2, 83]), o($Vp1, [2, 84]), o($Vp1, [2, 85]), o($Vp1, [2, 86]), o($Vp1, [2, 87]), o($Vp1, [2, 88]), o($Vp1, [2, 89]), o($Vp1, [2, 90]), o($Vp1, [2, 91]), o($Vp1, [2, 92]), o($Vp1, [2, 93]), { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 193], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 40: 28, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 81: $Vf, 82: $Vg, 83: $Vh, 84: $Vi, 85: $Vj, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs, 118: $Vt, 119: $Vu, 120: $Vv, 121: $Vw }, { 10: $Vx, 18: 194 }, { 10: [1, 195], 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 109, 111: $Vq, 112: $Vr, 113: $Vs }, { 10: [1, 196] }, { 10: [1, 197], 103: [1, 198] }, o($Vq1, [2, 121]), { 10: [1, 199], 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 109, 111: $Vq, 112: $Vr, 113: $Vs }, { 10: [1, 200], 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 109, 111: $Vq, 112: $Vr, 113: $Vs }, { 77: [1, 201] }, o($Vg1, [2, 102], { 10: [1, 202] }), o($Vg1, [2, 104], { 10: [1, 203] }), { 77: [1, 204] }, o($Vh1, [2, 177]), { 77: [1, 205], 95: [1, 206] }, o($VO, [2, 50], { 110: 109, 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 111: $Vq, 112: $Vr, 113: $Vs }), { 31: [1, 207], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($Vr1, [2, 79]), o($Vr1, [2, 81]), o($Vr1, [2, 82]), o($Vr1, [2, 146]), o($Vr1, [2, 147]), o($Vr1, [2, 148]), o($Vr1, [2, 149]), { 47: [1, 209], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 210, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 49: [1, 211], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 51: [1, 212], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 53: [1, 213], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 55: [1, 214], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 58: [1, 215] }, { 62: [1, 216], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 64: [1, 217], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 218, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 31: [1, 219], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 65: $Vi1, 67: [1, 220], 69: [1, 221], 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 65: $Vi1, 67: [1, 223], 69: [1, 222], 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VC, [2, 44], { 42: $Vf1 }), o($VS, [2, 70]), o($VS, [2, 69]), { 60: [1, 224], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VS, [2, 72]), o($Vo1, [2, 74]), { 30: 225, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($Ve1, $V4, { 5: 226 }), o($Vp1, [2, 95]), o($Vy, [2, 35]), { 41: 227, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 228, 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 239, 101: [1, 240], 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 241, 101: [1, 242], 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 102: [1, 243] }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 244, 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 42: $Vd, 45: 245, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, o($Vg1, [2, 101]), { 77: [1, 246] }, { 77: [1, 247], 95: [1, 248] }, o($Vg1, [2, 109]), o($Vg1, [2, 111], { 10: [1, 249] }), o($Vg1, [2, 112]), o($VP, [2, 51]), o($Vr1, [2, 80]), o($VP, [2, 52]), { 49: [1, 250], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VP, [2, 59]), o($VP, [2, 54]), o($VP, [2, 55]), o($VP, [2, 56]), { 106: [1, 251] }, o($VP, [2, 58]), o($VP, [2, 60]), { 64: [1, 252], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VP, [2, 62]), o($VP, [2, 63]), o($VP, [2, 65]), o($VP, [2, 64]), o($VP, [2, 66]), o([10, 42, 58, 86, 99, 102, 103, 106, 108, 111, 112, 113], [2, 78]), { 31: [1, 253], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 254], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 40: 28, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 81: $Vf, 82: $Vg, 83: $Vh, 84: $Vi, 85: $Vj, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs, 118: $Vt, 119: $Vu, 120: $Vv, 121: $Vw }, o($VO, [2, 48]), o($Vg1, [2, 114], { 103: $VA1 }), o($VB1, [2, 123], { 105: 256, 10: $Vs1, 58: $Vt1, 81: $Vu1, 102: $Vv1, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }), o($VC1, [2, 125]), o($VC1, [2, 127]), o($VC1, [2, 128]), o($VC1, [2, 129]), o($VC1, [2, 130]), o($VC1, [2, 131]), o($VC1, [2, 132]), o($VC1, [2, 133]), o($VC1, [2, 134]), o($Vg1, [2, 115], { 103: $VA1 }), { 10: [1, 257] }, o($Vg1, [2, 116], { 103: $VA1 }), { 10: [1, 258] }, o($Vq1, [2, 122]), o($Vg1, [2, 98], { 103: $VA1 }), o($Vg1, [2, 99], { 110: 109, 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 111: $Vq, 112: $Vr, 113: $Vs }), o($Vg1, [2, 103]), o($Vg1, [2, 105], { 10: [1, 259] }), o($Vg1, [2, 106]), { 95: [1, 260] }, { 49: [1, 261] }, { 60: [1, 262] }, { 64: [1, 263] }, { 8: $Vz, 9: $VA, 11: $VB, 21: 264 }, o($Vy, [2, 34]), { 10: $Vs1, 58: $Vt1, 81: $Vu1, 102: $Vv1, 104: 265, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, o($VC1, [2, 126]), { 14: $VD, 42: $VE, 58: $VF, 86: $VG, 98: 266, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN, 117: 84 }, { 14: $VD, 42: $VE, 58: $VF, 86: $VG, 98: 267, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN, 117: 84 }, { 95: [1, 268] }, o($Vg1, [2, 113]), o($VP, [2, 53]), { 30: 269, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VP, [2, 61]), o($Ve1, $V4, { 5: 270 }), o($VB1, [2, 124], { 105: 256, 10: $Vs1, 58: $Vt1, 81: $Vu1, 102: $Vv1, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }), o($Vg1, [2, 119], { 117: 160, 10: [1, 271], 14: $VD, 42: $VE, 58: $VF, 86: $VG, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN }), o($Vg1, [2, 120], { 117: 160, 10: [1, 272], 14: $VD, 42: $VE, 58: $VF, 86: $VG, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN }), o($Vg1, [2, 107]), { 31: [1, 273], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 274], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 40: 28, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 81: $Vf, 82: $Vg, 83: $Vh, 84: $Vi, 85: $Vj, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs, 118: $Vt, 119: $Vu, 120: $Vv, 121: $Vw }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 275, 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 276, 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, o($VP, [2, 57]), o($Vy, [2, 33]), o($Vg1, [2, 117], { 103: $VA1 }), o($Vg1, [2, 118], { 103: $VA1 })],\n defaultActions: {},\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex2() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex2();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex2() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"acc_title\");\n return 34;\n case 1:\n this.popState();\n return \"acc_title_value\";\n case 2:\n this.begin(\"acc_descr\");\n return 36;\n case 3:\n this.popState();\n return \"acc_descr_value\";\n case 4:\n this.begin(\"acc_descr_multiline\");\n break;\n case 5:\n this.popState();\n break;\n case 6:\n return \"acc_descr_multiline_value\";\n case 7:\n this.begin(\"callbackname\");\n break;\n case 8:\n this.popState();\n break;\n case 9:\n this.popState();\n this.begin(\"callbackargs\");\n break;\n case 10:\n return 92;\n case 11:\n this.popState();\n break;\n case 12:\n return 93;\n case 13:\n return \"MD_STR\";\n case 14:\n this.popState();\n break;\n case 15:\n this.begin(\"md_string\");\n break;\n case 16:\n return \"STR\";\n case 17:\n this.popState();\n break;\n case 18:\n this.pushState(\"string\");\n break;\n case 19:\n return 81;\n case 20:\n return 99;\n case 21:\n return 82;\n case 22:\n return 101;\n case 23:\n return 83;\n case 24:\n return 84;\n case 25:\n return 94;\n case 26:\n this.begin(\"click\");\n break;\n case 27:\n this.popState();\n break;\n case 28:\n return 85;\n case 29:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 12;\n case 30:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 12;\n case 31:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 12;\n case 32:\n return 27;\n case 33:\n return 32;\n case 34:\n return 95;\n case 35:\n return 95;\n case 36:\n return 95;\n case 37:\n return 95;\n case 38:\n this.popState();\n return 13;\n case 39:\n this.popState();\n return 14;\n case 40:\n this.popState();\n return 14;\n case 41:\n this.popState();\n return 14;\n case 42:\n this.popState();\n return 14;\n case 43:\n this.popState();\n return 14;\n case 44:\n this.popState();\n return 14;\n case 45:\n this.popState();\n return 14;\n case 46:\n this.popState();\n return 14;\n case 47:\n this.popState();\n return 14;\n case 48:\n this.popState();\n return 14;\n case 49:\n return 118;\n case 50:\n return 119;\n case 51:\n return 120;\n case 52:\n return 121;\n case 53:\n return 102;\n case 54:\n return 108;\n case 55:\n return 44;\n case 56:\n return 58;\n case 57:\n return 42;\n case 58:\n return 8;\n case 59:\n return 103;\n case 60:\n return 112;\n case 61:\n this.popState();\n return 75;\n case 62:\n this.pushState(\"edgeText\");\n return 73;\n case 63:\n return 116;\n case 64:\n this.popState();\n return 75;\n case 65:\n this.pushState(\"thickEdgeText\");\n return 73;\n case 66:\n return 116;\n case 67:\n this.popState();\n return 75;\n case 68:\n this.pushState(\"dottedEdgeText\");\n return 73;\n case 69:\n return 116;\n case 70:\n return 75;\n case 71:\n this.popState();\n return 51;\n case 72:\n return \"TEXT\";\n case 73:\n this.pushState(\"ellipseText\");\n return 50;\n case 74:\n this.popState();\n return 53;\n case 75:\n this.pushState(\"text\");\n return 52;\n case 76:\n this.popState();\n return 55;\n case 77:\n this.pushState(\"text\");\n return 54;\n case 78:\n return 56;\n case 79:\n this.pushState(\"text\");\n return 65;\n case 80:\n this.popState();\n return 62;\n case 81:\n this.pushState(\"text\");\n return 61;\n case 82:\n this.popState();\n return 47;\n case 83:\n this.pushState(\"text\");\n return 46;\n case 84:\n this.popState();\n return 67;\n case 85:\n this.popState();\n return 69;\n case 86:\n return 114;\n case 87:\n this.pushState(\"trapText\");\n return 66;\n case 88:\n this.pushState(\"trapText\");\n return 68;\n case 89:\n return 115;\n case 90:\n return 65;\n case 91:\n return 87;\n case 92:\n return \"SEP\";\n case 93:\n return 86;\n case 94:\n return 112;\n case 95:\n return 108;\n case 96:\n return 42;\n case 97:\n return 106;\n case 98:\n return 111;\n case 99:\n return 113;\n case 100:\n this.popState();\n return 60;\n case 101:\n this.pushState(\"text\");\n return 60;\n case 102:\n this.popState();\n return 49;\n case 103:\n this.pushState(\"text\");\n return 48;\n case 104:\n this.popState();\n return 31;\n case 105:\n this.pushState(\"text\");\n return 29;\n case 106:\n this.popState();\n return 64;\n case 107:\n this.pushState(\"text\");\n return 63;\n case 108:\n return \"TEXT\";\n case 109:\n return \"QUOTE\";\n case 110:\n return 9;\n case 111:\n return 10;\n case 112:\n return 11;\n }\n },\n rules: [/^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:call[\\s]+)/, /^(?:\\([\\s]*\\))/, /^(?:\\()/, /^(?:[^(]*)/, /^(?:\\))/, /^(?:[^)]*)/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"][`])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:[\"])/, /^(?:style\\b)/, /^(?:default\\b)/, /^(?:linkStyle\\b)/, /^(?:interpolate\\b)/, /^(?:classDef\\b)/, /^(?:class\\b)/, /^(?:href[\\s])/, /^(?:click[\\s]+)/, /^(?:[\\s\\n])/, /^(?:[^\\s\\n]*)/, /^(?:flowchart-elk\\b)/, /^(?:graph\\b)/, /^(?:flowchart\\b)/, /^(?:subgraph\\b)/, /^(?:end\\b\\s*)/, /^(?:_self\\b)/, /^(?:_blank\\b)/, /^(?:_parent\\b)/, /^(?:_top\\b)/, /^(?:(\\r?\\n)*\\s*\\n)/, /^(?:\\s*LR\\b)/, /^(?:\\s*RL\\b)/, /^(?:\\s*TB\\b)/, /^(?:\\s*BT\\b)/, /^(?:\\s*TD\\b)/, /^(?:\\s*BR\\b)/, /^(?:\\s*<)/, /^(?:\\s*>)/, /^(?:\\s*\\^)/, /^(?:\\s*v\\b)/, /^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:[0-9]+)/, /^(?:#)/, /^(?::::)/, /^(?::)/, /^(?:&)/, /^(?:;)/, /^(?:,)/, /^(?:\\*)/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?--\\s*)/, /^(?:[^-]|-(?!-)+)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?==\\s*)/, /^(?:[^=]|=(?!))/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?:\\s*[xo<]?-\\.\\s*)/, /^(?:[^\\.]|\\.(?!))/, /^(?:\\s*~~[\\~]+\\s*)/, /^(?:[-/\\)][\\)])/, /^(?:[^\\(\\)\\[\\]\\{\\}]|(?!\\)+))/, /^(?:\\(-)/, /^(?:\\]\\))/, /^(?:\\(\\[)/, /^(?:\\]\\])/, /^(?:\\[\\[)/, /^(?:\\[\\|)/, /^(?:>)/, /^(?:\\)\\])/, /^(?:\\[\\()/, /^(?:\\)\\)\\))/, /^(?:\\(\\(\\()/, /^(?:[\\\\(?=\\])][\\]])/, /^(?:\\/(?=\\])\\])/, /^(?:\\/(?!\\])|\\\\(?!\\])|[^\\\\\\[\\]\\(\\)\\{\\}\\/]+)/, /^(?:\\[\\/)/, /^(?:\\[\\\\)/, /^(?:<)/, /^(?:>)/, /^(?:\\^)/, /^(?:\\\\\\|)/, /^(?:v\\b)/, /^(?:\\*)/, /^(?:#)/, /^(?:&)/, /^(?:([A-Za-z0-9!\"\\#$%&'*+\\.`?\\\\_\\/]|-(?=[^\\>\\-\\.])|(?!))+)/, /^(?:-)/, /^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/, /^(?:\\|)/, /^(?:\\|)/, /^(?:\\))/, /^(?:\\()/, /^(?:\\])/, /^(?:\\[)/, /^(?:(\\}))/, /^(?:\\{)/, /^(?:[^\\[\\]\\(\\)\\{\\}\\|\\\"]+)/, /^(?:\")/, /^(?:(\\r?\\n)+)/, /^(?:\\s)/, /^(?:$)/],\n conditions: { \"callbackargs\": { \"rules\": [11, 12, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"callbackname\": { \"rules\": [8, 9, 10, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"href\": { \"rules\": [15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"click\": { \"rules\": [15, 18, 27, 28, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"dottedEdgeText\": { \"rules\": [15, 18, 67, 69, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"thickEdgeText\": { \"rules\": [15, 18, 64, 66, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"edgeText\": { \"rules\": [15, 18, 61, 63, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"trapText\": { \"rules\": [15, 18, 70, 73, 75, 77, 81, 83, 84, 85, 86, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"ellipseText\": { \"rules\": [15, 18, 70, 71, 72, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"text\": { \"rules\": [15, 18, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 87, 88, 100, 101, 102, 103, 104, 105, 106, 107, 108], \"inclusive\": false }, \"vertex\": { \"rules\": [15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"dir\": { \"rules\": [15, 18, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [5, 6, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"acc_descr\": { \"rules\": [3, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"acc_title\": { \"rules\": [1, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"md_string\": { \"rules\": [13, 14, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"string\": { \"rules\": [15, 16, 17, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 2, 4, 7, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 64, 65, 67, 68, 70, 73, 75, 77, 78, 79, 81, 83, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 105, 107, 109, 110, 111, 112], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst MERMAID_DOM_ID_PREFIX = \"flowchart-\";\nlet vertexCounter = 0;\nlet config = getConfig();\nlet vertices = {};\nlet edges = [];\nlet classes = {};\nlet subGraphs = [];\nlet subGraphLookup = {};\nlet tooltips = {};\nlet subCount = 0;\nlet firstGraphFlag = true;\nlet direction;\nlet version;\nlet funs = [];\nconst sanitizeText = (txt) => common.sanitizeText(txt, config);\nconst lookUpDomId = function(id) {\n const veritceKeys = Object.keys(vertices);\n for (const veritceKey of veritceKeys) {\n if (vertices[veritceKey].id === id) {\n return vertices[veritceKey].domId;\n }\n }\n return id;\n};\nconst addVertex = function(_id, textObj, type, style, classes2, dir, props = {}) {\n let txt;\n let id = _id;\n if (id === void 0) {\n return;\n }\n if (id.trim().length === 0) {\n return;\n }\n if (vertices[id] === void 0) {\n vertices[id] = {\n id,\n labelType: \"text\",\n domId: MERMAID_DOM_ID_PREFIX + id + \"-\" + vertexCounter,\n styles: [],\n classes: []\n };\n }\n vertexCounter++;\n if (textObj !== void 0) {\n config = getConfig();\n txt = sanitizeText(textObj.text.trim());\n vertices[id].labelType = textObj.type;\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1);\n }\n vertices[id].text = txt;\n } else {\n if (vertices[id].text === void 0) {\n vertices[id].text = _id;\n }\n }\n if (type !== void 0) {\n vertices[id].type = type;\n }\n if (style !== void 0 && style !== null) {\n style.forEach(function(s) {\n vertices[id].styles.push(s);\n });\n }\n if (classes2 !== void 0 && classes2 !== null) {\n classes2.forEach(function(s) {\n vertices[id].classes.push(s);\n });\n }\n if (dir !== void 0) {\n vertices[id].dir = dir;\n }\n if (vertices[id].props === void 0) {\n vertices[id].props = props;\n } else if (props !== void 0) {\n Object.assign(vertices[id].props, props);\n }\n};\nconst addSingleLink = function(_start, _end, type) {\n let start = _start;\n let end = _end;\n const edge = { start, end, type: void 0, text: \"\", labelType: \"text\" };\n log.info(\"abc78 Got edge...\", edge);\n const linkTextObj = type.text;\n if (linkTextObj !== void 0) {\n edge.text = sanitizeText(linkTextObj.text.trim());\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n edge.labelType = linkTextObj.type;\n }\n if (type !== void 0) {\n edge.type = type.type;\n edge.stroke = type.stroke;\n edge.length = type.length;\n }\n edges.push(edge);\n};\nconst addLink = function(_start, _end, type) {\n log.info(\"addLink (abc78)\", _start, _end, type);\n let i, j;\n for (i = 0; i < _start.length; i++) {\n for (j = 0; j < _end.length; j++) {\n addSingleLink(_start[i], _end[j], type);\n }\n }\n};\nconst updateLinkInterpolate = function(positions, interp) {\n positions.forEach(function(pos) {\n if (pos === \"default\") {\n edges.defaultInterpolate = interp;\n } else {\n edges[pos].interpolate = interp;\n }\n });\n};\nconst updateLink = function(positions, style) {\n positions.forEach(function(pos) {\n if (pos === \"default\") {\n edges.defaultStyle = style;\n } else {\n if (utils.isSubstringInArray(\"fill\", style) === -1) {\n style.push(\"fill:none\");\n }\n edges[pos].style = style;\n }\n });\n};\nconst addClass = function(ids, style) {\n ids.split(\",\").forEach(function(id) {\n if (classes[id] === void 0) {\n classes[id] = { id, styles: [], textStyles: [] };\n }\n if (style !== void 0 && style !== null) {\n style.forEach(function(s) {\n if (s.match(\"color\")) {\n const newStyle = s.replace(\"fill\", \"bgFill\").replace(\"color\", \"fill\");\n classes[id].textStyles.push(newStyle);\n }\n classes[id].styles.push(s);\n });\n }\n });\n};\nconst setDirection = function(dir) {\n direction = dir;\n if (direction.match(/.*/)) {\n direction = \"LR\";\n }\n if (direction.match(/.*v/)) {\n direction = \"TB\";\n }\n if (direction === \"TD\") {\n direction = \"TB\";\n }\n};\nconst setClass = function(ids, className) {\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (vertices[id] !== void 0) {\n vertices[id].classes.push(className);\n }\n if (subGraphLookup[id] !== void 0) {\n subGraphLookup[id].classes.push(className);\n }\n });\n};\nconst setTooltip = function(ids, tooltip) {\n ids.split(\",\").forEach(function(id) {\n if (tooltip !== void 0) {\n tooltips[version === \"gen-1\" ? lookUpDomId(id) : id] = sanitizeText(tooltip);\n }\n });\n};\nconst setClickFun = function(id, functionName, functionArgs) {\n let domId = lookUpDomId(id);\n if (getConfig().securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n if (argList.length === 0) {\n argList.push(id);\n }\n if (vertices[id] !== void 0) {\n vertices[id].haveCallback = true;\n funs.push(function() {\n const elem = document.querySelector(`[id=\"${domId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n \"click\",\n function() {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\nconst setLink = function(ids, linkStr, target) {\n ids.split(\",\").forEach(function(id) {\n if (vertices[id] !== void 0) {\n vertices[id].link = utils.formatUrl(linkStr, config);\n vertices[id].linkTarget = target;\n }\n });\n setClass(ids, \"clickable\");\n};\nconst getTooltip = function(id) {\n if (tooltips.hasOwnProperty(id)) {\n return tooltips[id];\n }\n return void 0;\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, \"clickable\");\n};\nconst bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nconst getDirection = function() {\n return direction.trim();\n};\nconst getVertices = function() {\n return vertices;\n};\nconst getEdges = function() {\n return edges;\n};\nconst getClasses = function() {\n return classes;\n};\nconst setupToolTips = function(element) {\n let tooltipElem = select(\".mermaidTooltip\");\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select(\"body\").append(\"div\").attr(\"class\", \"mermaidTooltip\").style(\"opacity\", 0);\n }\n const svg = select(element).select(\"svg\");\n const nodes = svg.selectAll(\"g.node\");\n nodes.on(\"mouseover\", function() {\n const el = select(this);\n const title = el.attr(\"title\");\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n tooltipElem.transition().duration(200).style(\"opacity\", \".9\");\n tooltipElem.text(el.attr(\"title\")).style(\"left\", window.scrollX + rect.left + (rect.right - rect.left) / 2 + \"px\").style(\"top\", window.scrollY + rect.top - 14 + document.body.scrollTop + \"px\");\n tooltipElem.html(tooltipElem.html().replace(/<br\\/>/g, \"
\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = select(this);\n el.classed(\"hover\", false);\n });\n};\nfuns.push(setupToolTips);\nconst clear = function(ver = \"gen-1\") {\n vertices = {};\n classes = {};\n edges = [];\n funs = [setupToolTips];\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = {};\n firstGraphFlag = true;\n version = ver;\n clear$1();\n};\nconst setGen = (ver) => {\n version = ver || \"gen-2\";\n};\nconst defaultStyle = function() {\n return \"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;\";\n};\nconst addSubGraph = function(_id, list, _title) {\n let id = _id.text.trim();\n let title = _title.text;\n if (_id === _title && _title.text.match(/\\s/)) {\n id = void 0;\n }\n function uniq(a) {\n const prims = { boolean: {}, number: {}, string: {} };\n const objs = [];\n let dir2;\n const nodeList2 = a.filter(function(item) {\n const type = typeof item;\n if (item.stmt && item.stmt === \"dir\") {\n dir2 = item.value;\n return false;\n }\n if (item.trim() === \"\") {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : prims[type][item] = true;\n } else {\n return objs.includes(item) ? false : objs.push(item);\n }\n });\n return { nodeList: nodeList2, dir: dir2 };\n }\n let nodeList = [];\n const { nodeList: nl, dir } = uniq(nodeList.concat.apply(nodeList, list));\n nodeList = nl;\n if (version === \"gen-1\") {\n for (let i = 0; i < nodeList.length; i++) {\n nodeList[i] = lookUpDomId(nodeList[i]);\n }\n }\n id = id || \"subGraph\" + subCount;\n title = title || \"\";\n title = sanitizeText(title);\n subCount = subCount + 1;\n const subGraph = {\n id,\n nodes: nodeList,\n title: title.trim(),\n classes: [],\n dir,\n labelType: _title.type\n };\n log.info(\"Adding\", subGraph.id, subGraph.nodes, subGraph.dir);\n subGraph.nodes = makeUniq(subGraph, subGraphs).nodes;\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\nconst getPosForId = function(id) {\n for (const [i, subGraph] of subGraphs.entries()) {\n if (subGraph.id === id) {\n return i;\n }\n }\n return -1;\n};\nlet secCount = -1;\nconst posCrossRef = [];\nconst indexNodes2 = function(id, pos) {\n const nodes = subGraphs[pos].nodes;\n secCount = secCount + 1;\n if (secCount > 2e3) {\n return;\n }\n posCrossRef[secCount] = pos;\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n };\n }\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count]);\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n return {\n result: false,\n count: posCount\n };\n};\nconst getDepthFirstPos = function(pos) {\n return posCrossRef[pos];\n};\nconst indexNodes = function() {\n secCount = -1;\n if (subGraphs.length > 0) {\n indexNodes2(\"none\", subGraphs.length - 1);\n }\n};\nconst getSubGraphs = function() {\n return subGraphs;\n};\nconst firstGraph = () => {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n return false;\n};\nconst destructStartLink = (_str) => {\n let str = _str.trim();\n let type = \"arrow_open\";\n switch (str[0]) {\n case \"<\":\n type = \"arrow_point\";\n str = str.slice(1);\n break;\n case \"x\":\n type = \"arrow_cross\";\n str = str.slice(1);\n break;\n case \"o\":\n type = \"arrow_circle\";\n str = str.slice(1);\n break;\n }\n let stroke = \"normal\";\n if (str.includes(\"=\")) {\n stroke = \"thick\";\n }\n if (str.includes(\".\")) {\n stroke = \"dotted\";\n }\n return { type, stroke };\n};\nconst countChar = (char, str) => {\n const length = str.length;\n let count = 0;\n for (let i = 0; i < length; ++i) {\n if (str[i] === char) {\n ++count;\n }\n }\n return count;\n};\nconst destructEndLink = (_str) => {\n const str = _str.trim();\n let line = str.slice(0, -1);\n let type = \"arrow_open\";\n switch (str.slice(-1)) {\n case \"x\":\n type = \"arrow_cross\";\n if (str[0] === \"x\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \">\":\n type = \"arrow_point\";\n if (str[0] === \"<\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \"o\":\n type = \"arrow_circle\";\n if (str[0] === \"o\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n }\n let stroke = \"normal\";\n let length = line.length - 1;\n if (line[0] === \"=\") {\n stroke = \"thick\";\n }\n if (line[0] === \"~\") {\n stroke = \"invisible\";\n }\n let dots = countChar(\".\", line);\n if (dots) {\n stroke = \"dotted\";\n length = dots;\n }\n return { type, stroke, length };\n};\nconst destructLink = (_str, _startStr) => {\n const info = destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n if (startInfo.stroke !== info.stroke) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n if (startInfo.type === \"arrow_open\") {\n startInfo.type = info.type;\n } else {\n if (startInfo.type !== info.type) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n startInfo.type = \"double_\" + startInfo.type;\n }\n if (startInfo.type === \"double_arrow\") {\n startInfo.type = \"double_arrow_point\";\n }\n startInfo.length = info.length;\n return startInfo;\n }\n return info;\n};\nconst exists = (allSgs, _id) => {\n let res = false;\n allSgs.forEach((sg) => {\n const pos = sg.nodes.indexOf(_id);\n if (pos >= 0) {\n res = true;\n }\n });\n return res;\n};\nconst makeUniq = (sg, allSubgraphs) => {\n const res = [];\n sg.nodes.forEach((_id, pos) => {\n if (!exists(allSubgraphs, _id)) {\n res.push(sg.nodes[pos]);\n }\n });\n return { nodes: res };\n};\nconst lex = {\n firstGraph\n};\nconst flowDb = {\n defaultConfig: () => defaultConfig.flowchart,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n addVertex,\n lookUpDomId,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n setTooltip,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n setGen,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs,\n destructLink,\n lex,\n exists,\n makeUniq,\n setDiagramTitle,\n getDiagramTitle\n};\nconst db = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addClass,\n addLink,\n addSingleLink,\n addSubGraph,\n addVertex,\n bindFunctions,\n clear,\n default: flowDb,\n defaultStyle,\n destructLink,\n firstGraph,\n getClasses,\n getDepthFirstPos,\n getDirection,\n getEdges,\n getSubGraphs,\n getTooltip,\n getVertices,\n indexNodes,\n lex,\n lookUpDomId,\n setClass,\n setClickEvent,\n setDirection,\n setGen,\n setLink,\n updateLink,\n updateLinkInterpolate\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n db as d,\n flowDb as f,\n parser$1 as p\n};\n"], + "mappings": "yJAEA,IAAIA,GAAS,UAAW,CACtB,IAAIC,EAAI,SAASC,GAAGC,EAAGC,EAAIC,EAAG,CAC5B,IAAKD,EAAKA,GAAM,CAAC,EAAGC,EAAIH,GAAE,OAAQG,IAAKD,EAAGF,GAAEG,CAAC,CAAC,EAAIF,EAChD,CACF,OAAOC,CACT,EAAGE,EAAM,CAAC,EAAG,CAAC,EAAGC,EAAM,CAAC,EAAG,CAAC,EAAGC,EAAM,CAAC,EAAG,CAAC,EAAGC,EAAM,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,EAAM,CAAC,EAAG,CAAC,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAG,GAAI,GAAI,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GA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,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,GAAI,CAAC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,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,GACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,UAAU,UAAU,EAClB,GACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,UAAU,eAAe,EACvB,GACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,UAAU,gBAAgB,EACxB,GACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,MAAO,OACT,IAAK,IACH,YAAK,UAAU,aAAa,EACrB,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,UAAU,MAAM,EACd,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,UAAU,MAAM,EACd,GACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,YAAK,UAAU,MAAM,EACd,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,UAAU,MAAM,EACd,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IAC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", + "names": ["parser", "o", "k", "v", "o2", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "$VV", "$VW", "$VX", "$VY", "$VZ", "$V_", "$V$", "$V01", "$V11", "$V21", "$V31", "$V41", "$V51", "$V61", "$V71", "$V81", "$V91", "$Va1", "$Vb1", "$Vc1", "$Vd1", "$Ve1", "$Vf1", "$Vg1", "$Vh1", "$Vi1", "$Vj1", "$Vk1", "$Vl1", "$Vm1", "$Vn1", "$Vo1", "$Vp1", "$Vq1", "$Vr1", "$Vs1", "$Vt1", "$Vu1", "$Vv1", "$Vw1", "$Vx1", "$Vy1", "$Vz1", "$VA1", "$VB1", "$VC1", "parser2", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "inf", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "TERROR", "EOF", "args", "lexer2", "sharedState", "yyloc", "ranges", "lex2", "token", "symbol", "state", "action", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "n", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "Parser", "parser$1", "MERMAID_DOM_ID_PREFIX", "vertexCounter", "config", "getConfig$1", "vertices", "edges", "classes", "subGraphs", "subGraphLookup", "tooltips", "subCount", "firstGraphFlag", "direction", "version", "funs", "sanitizeText", "txt", "common$1", "lookUpDomId", "id", "veritceKeys", "veritceKey", "addVertex", "_id", "textObj", "type", "style", "classes2", "dir", "props", "s", "addSingleLink", "_start", "_end", "edge", "log$1", "linkTextObj", "addLink", "j", "updateLinkInterpolate", "positions", "interp", "pos", "updateLink", "utils", "addClass", "ids", "newStyle", "setDirection", "setClass", "className", "setTooltip", "tooltip", "setClickFun", "functionName", "functionArgs", "domId", "argList", "item", "elem", "setLink", "linkStr", "target", "getTooltip", "setClickEvent", "bindFunctions", "element", "fun", "getDirection", "getVertices", "getEdges", "getClasses", "setupToolTips", "tooltipElem", "select_default", "el", "rect", "clear", "ver", "setGen", "defaultStyle", "addSubGraph", "list", "_title", "title", "uniq", "a", "prims", "objs", "dir2", "nodeList", "nl", "subGraph", "makeUniq", "getPosForId", "secCount", "posCrossRef", "indexNodes2", "nodes", "count", "posCount", "childPos", "res", "getDepthFirstPos", "indexNodes", "getSubGraphs", "firstGraph", "destructStartLink", "_str", "stroke", "countChar", "char", "length", "destructEndLink", "line", "dots", "destructLink", "_startStr", "info", "startInfo", "exists", "allSgs", "sg", "allSubgraphs", "lex", "flowDb", "defaultConfig", "setAccTitle", "getAccTitle", "getAccDescription", "setAccDescription", "setDiagramTitle", "getDiagramTitle", "db"] +} diff --git a/public/chunk-P42HNYSU.min.js b/public/chunk-P42HNYSU.min.js new file mode 100644 index 0000000..d682569 --- /dev/null +++ b/public/chunk-P42HNYSU.min.js @@ -0,0 +1,2 @@ +var g=Object.create;var e=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var m=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(b,c)=>(typeof require<"u"?require:b)[c]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var n=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),o=(a,b)=>{for(var c in b)e(a,c,{get:b[c],enumerable:!0})},l=(a,b,c,f)=>{if(b&&typeof b=="object"||typeof b=="function")for(let d of i(b))!k.call(a,d)&&d!==c&&e(a,d,{get:()=>b[d],enumerable:!(f=h(b,d))||f.enumerable});return a};var p=(a,b,c)=>(c=a!=null?g(j(a)):{},l(b||!a||!a.__esModule?e(c,"default",{value:a,enumerable:!0}):c,a));export{m as a,n as b,o as c,p as d}; +//# sourceMappingURL=chunk-P42HNYSU.min.js.map diff --git a/public/chunk-P42HNYSU.min.js.map b/public/chunk-P42HNYSU.min.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/public/chunk-P42HNYSU.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/public/chunk-RE5CTVCE.min.js b/public/chunk-RE5CTVCE.min.js new file mode 100644 index 0000000..fd234a2 --- /dev/null +++ b/public/chunk-RE5CTVCE.min.js @@ -0,0 +1,161 @@ +import{$a as F,Fa as we,Ha as Pe,Ja as te,Ka as S,Ya as Be,db as Ve,eb as Ge,fb as Me,gb as Ue,h as P,hb as ze,ib as Ye,jb as Ke}from"./chunk-DJFTDYIK.min.js";var _e=function(){var e=function(L,u,a,o){for(a=a||{},o=L.length;o--;a[L[o]]=u);return a},n=[1,16],r=[1,17],h=[1,18],l=[1,37],A=[1,38],g=[1,24],D=[1,22],B=[1,23],_=[1,29],re=[1,30],ae=[1,31],le=[1,32],ce=[1,33],oe=[1,34],he=[1,25],Ae=[1,26],pe=[1,27],fe=[1,28],d=[1,42],E=[1,39],C=[1,40],m=[1,41],k=[1,43],de=[1,9],c=[1,8,9],Y=[1,54],K=[1,55],j=[1,56],Q=[1,57],X=[1,58],Ee=[1,59],Ce=[1,60],q=[1,8,9,38],Le=[1,71],G=[1,8,9,12,13,21,36,38,41,58,59,60,61,62,63,64,69,71],W=[1,8,9,12,13,19,21,36,38,41,45,58,59,60,61,62,63,64,69,71,84,86,87,88,89],H=[13,84,86,87,88,89],M=[13,63,64,84,86,87,88,89],xe=[13,58,59,60,61,62,84,86,87,88,89],me=[1,90],be=[1,8,9,36,38,41],J=[1,8,9,21],ge={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,className:17,classLiteralName:18,GENERICTYPE:19,relationStatement:20,LABEL:21,namespaceStatement:22,classStatement:23,memberStatement:24,annotationStatement:25,clickStatement:26,cssClassStatement:27,noteStatement:28,direction:29,acc_title:30,acc_title_value:31,acc_descr:32,acc_descr_value:33,acc_descr_multiline_value:34,namespaceIdentifier:35,STRUCT_START:36,classStatements:37,STRUCT_STOP:38,NAMESPACE:39,classIdentifier:40,STYLE_SEPARATOR:41,members:42,CLASS:43,ANNOTATION_START:44,ANNOTATION_END:45,MEMBER:46,SEPARATOR:47,relation:48,NOTE_FOR:49,noteText:50,NOTE:51,direction_tb:52,direction_bt:53,direction_rl:54,direction_lr:55,relationType:56,lineType:57,AGGREGATION:58,EXTENSION:59,COMPOSITION:60,DEPENDENCY:61,LOLLIPOP:62,LINE:63,DOTTED_LINE:64,CALLBACK:65,LINK:66,LINK_TARGET:67,CLICK:68,CALLBACK_NAME:69,CALLBACK_ARGS:70,HREF:71,CSSCLASS:72,commentToken:73,textToken:74,graphCodeTokens:75,textNoTagsToken:76,TAGSTART:77,TAGEND:78,"==":79,"--":80,PCT:81,DEFAULT:82,SPACE:83,MINUS:84,keywords:85,UNICODE_TEXT:86,NUM:87,ALPHA:88,BQUOTE_STR:89,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",19:"GENERICTYPE",21:"LABEL",30:"acc_title",31:"acc_title_value",32:"acc_descr",33:"acc_descr_value",34:"acc_descr_multiline_value",36:"STRUCT_START",38:"STRUCT_STOP",39:"NAMESPACE",41:"STYLE_SEPARATOR",43:"CLASS",44:"ANNOTATION_START",45:"ANNOTATION_END",46:"MEMBER",47:"SEPARATOR",49:"NOTE_FOR",51:"NOTE",52:"direction_tb",53:"direction_bt",54:"direction_rl",55:"direction_lr",58:"AGGREGATION",59:"EXTENSION",60:"COMPOSITION",61:"DEPENDENCY",62:"LOLLIPOP",63:"LINE",64:"DOTTED_LINE",65:"CALLBACK",66:"LINK",67:"LINK_TARGET",68:"CLICK",69:"CALLBACK_NAME",70:"CALLBACK_ARGS",71:"HREF",72:"CSSCLASS",75:"graphCodeTokens",77:"TAGSTART",78:"TAGEND",79:"==",80:"--",81:"PCT",82:"DEFAULT",83:"SPACE",84:"MINUS",85:"keywords",86:"UNICODE_TEXT",87:"NUM",88:"ALPHA",89:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,2],[17,1],[17,1],[17,2],[17,2],[17,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[22,4],[22,5],[35,2],[37,1],[37,2],[37,3],[23,1],[23,3],[23,4],[23,6],[40,2],[40,3],[25,4],[42,1],[42,2],[24,1],[24,2],[24,1],[24,1],[20,3],[20,4],[20,4],[20,5],[28,3],[28,2],[29,1],[29,1],[29,1],[29,1],[48,3],[48,2],[48,2],[48,1],[56,1],[56,1],[56,1],[56,1],[56,1],[57,1],[57,1],[26,3],[26,4],[26,3],[26,4],[26,4],[26,5],[26,3],[26,4],[26,4],[26,5],[26,4],[26,5],[26,5],[26,6],[27,3],[73,1],[73,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[76,1],[76,1],[76,1],[76,1],[16,1],[16,1],[16,1],[16,1],[18,1],[50,1]],performAction:function(u,a,o,i,p,t,U){var s=t.length-1;switch(p){case 8:this.$=t[s-1];break;case 9:case 11:case 12:this.$=t[s];break;case 10:case 13:this.$=t[s-1]+t[s];break;case 14:case 15:this.$=t[s-1]+"~"+t[s]+"~";break;case 16:i.addRelation(t[s]);break;case 17:t[s-1].title=i.cleanupLabel(t[s]),i.addRelation(t[s-1]);break;case 26:this.$=t[s].trim(),i.setAccTitle(this.$);break;case 27:case 28:this.$=t[s].trim(),i.setAccDescription(this.$);break;case 29:i.addClassesToNamespace(t[s-3],t[s-1]);break;case 30:i.addClassesToNamespace(t[s-4],t[s-1]);break;case 31:this.$=t[s],i.addNamespace(t[s]);break;case 32:this.$=[t[s]];break;case 33:this.$=[t[s-1]];break;case 34:t[s].unshift(t[s-2]),this.$=t[s];break;case 36:i.setCssClass(t[s-2],t[s]);break;case 37:i.addMembers(t[s-3],t[s-1]);break;case 38:i.setCssClass(t[s-5],t[s-3]),i.addMembers(t[s-5],t[s-1]);break;case 39:this.$=t[s],i.addClass(t[s]);break;case 40:this.$=t[s-1],i.addClass(t[s-1]),i.setClassLabel(t[s-1],t[s]);break;case 41:i.addAnnotation(t[s],t[s-2]);break;case 42:this.$=[t[s]];break;case 43:t[s].push(t[s-1]),this.$=t[s];break;case 44:break;case 45:i.addMember(t[s-1],i.cleanupLabel(t[s]));break;case 46:break;case 47:break;case 48:this.$={id1:t[s-2],id2:t[s],relation:t[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 49:this.$={id1:t[s-3],id2:t[s],relation:t[s-1],relationTitle1:t[s-2],relationTitle2:"none"};break;case 50:this.$={id1:t[s-3],id2:t[s],relation:t[s-2],relationTitle1:"none",relationTitle2:t[s-1]};break;case 51:this.$={id1:t[s-4],id2:t[s],relation:t[s-2],relationTitle1:t[s-3],relationTitle2:t[s-1]};break;case 52:i.addNote(t[s],t[s-1]);break;case 53:i.addNote(t[s]);break;case 54:i.setDirection("TB");break;case 55:i.setDirection("BT");break;case 56:i.setDirection("RL");break;case 57:i.setDirection("LR");break;case 58:this.$={type1:t[s-2],type2:t[s],lineType:t[s-1]};break;case 59:this.$={type1:"none",type2:t[s],lineType:t[s-1]};break;case 60:this.$={type1:t[s-1],type2:"none",lineType:t[s]};break;case 61:this.$={type1:"none",type2:"none",lineType:t[s]};break;case 62:this.$=i.relationType.AGGREGATION;break;case 63:this.$=i.relationType.EXTENSION;break;case 64:this.$=i.relationType.COMPOSITION;break;case 65:this.$=i.relationType.DEPENDENCY;break;case 66:this.$=i.relationType.LOLLIPOP;break;case 67:this.$=i.lineType.LINE;break;case 68:this.$=i.lineType.DOTTED_LINE;break;case 69:case 75:this.$=t[s-2],i.setClickEvent(t[s-1],t[s]);break;case 70:case 76:this.$=t[s-3],i.setClickEvent(t[s-2],t[s-1]),i.setTooltip(t[s-2],t[s]);break;case 71:this.$=t[s-2],i.setLink(t[s-1],t[s]);break;case 72:this.$=t[s-3],i.setLink(t[s-2],t[s-1],t[s]);break;case 73:this.$=t[s-3],i.setLink(t[s-2],t[s-1]),i.setTooltip(t[s-2],t[s]);break;case 74:this.$=t[s-4],i.setLink(t[s-3],t[s-2],t[s]),i.setTooltip(t[s-3],t[s-1]);break;case 77:this.$=t[s-3],i.setClickEvent(t[s-2],t[s-1],t[s]);break;case 78:this.$=t[s-4],i.setClickEvent(t[s-3],t[s-2],t[s-1]),i.setTooltip(t[s-3],t[s]);break;case 79:this.$=t[s-3],i.setLink(t[s-2],t[s]);break;case 80:this.$=t[s-4],i.setLink(t[s-3],t[s-1],t[s]);break;case 81:this.$=t[s-4],i.setLink(t[s-3],t[s-1]),i.setTooltip(t[s-3],t[s]);break;case 82:this.$=t[s-5],i.setLink(t[s-4],t[s-2],t[s]),i.setTooltip(t[s-4],t[s-1]);break;case 83:i.setCssClass(t[s-1],t[s]);break}},table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:35,17:19,18:36,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:n,32:r,34:h,35:20,39:l,40:21,43:A,44:g,46:D,47:B,49:_,51:re,52:ae,53:le,54:ce,55:oe,65:he,66:Ae,68:pe,72:fe,84:d,86:E,87:C,88:m,89:k},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(de,[2,5],{8:[1,44]}),{8:[1,45]},e(c,[2,16],{21:[1,46]}),e(c,[2,18]),e(c,[2,19]),e(c,[2,20]),e(c,[2,21]),e(c,[2,22]),e(c,[2,23]),e(c,[2,24]),e(c,[2,25]),{31:[1,47]},{33:[1,48]},e(c,[2,28]),e(c,[2,44],{48:49,56:52,57:53,13:[1,50],21:[1,51],58:Y,59:K,60:j,61:Q,62:X,63:Ee,64:Ce}),{36:[1,61]},e(q,[2,35],{36:[1,63],41:[1,62]}),e(c,[2,46]),e(c,[2,47]),{16:64,84:d,86:E,87:C,88:m},{16:35,17:65,18:36,84:d,86:E,87:C,88:m,89:k},{16:35,17:66,18:36,84:d,86:E,87:C,88:m,89:k},{16:35,17:67,18:36,84:d,86:E,87:C,88:m,89:k},{13:[1,68]},{16:35,17:69,18:36,84:d,86:E,87:C,88:m,89:k},{13:Le,50:70},e(c,[2,54]),e(c,[2,55]),e(c,[2,56]),e(c,[2,57]),e(G,[2,11],{16:35,18:36,17:72,19:[1,73],84:d,86:E,87:C,88:m,89:k}),e(G,[2,12],{19:[1,74]}),{15:75,16:76,84:d,86:E,87:C,88:m},{16:35,17:77,18:36,84:d,86:E,87:C,88:m,89:k},e(W,[2,97]),e(W,[2,98]),e(W,[2,99]),e(W,[2,100]),e([1,8,9,12,13,19,21,36,38,41,58,59,60,61,62,63,64,69,71],[2,101]),e(de,[2,6],{10:5,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,17:19,35:20,40:21,16:35,18:36,5:78,30:n,32:r,34:h,39:l,43:A,44:g,46:D,47:B,49:_,51:re,52:ae,53:le,54:ce,55:oe,65:he,66:Ae,68:pe,72:fe,84:d,86:E,87:C,88:m,89:k}),{5:79,10:5,16:35,17:19,18:36,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:n,32:r,34:h,35:20,39:l,40:21,43:A,44:g,46:D,47:B,49:_,51:re,52:ae,53:le,54:ce,55:oe,65:he,66:Ae,68:pe,72:fe,84:d,86:E,87:C,88:m,89:k},e(c,[2,17]),e(c,[2,26]),e(c,[2,27]),{13:[1,81],16:35,17:80,18:36,84:d,86:E,87:C,88:m,89:k},{48:82,56:52,57:53,58:Y,59:K,60:j,61:Q,62:X,63:Ee,64:Ce},e(c,[2,45]),{57:83,63:Ee,64:Ce},e(H,[2,61],{56:84,58:Y,59:K,60:j,61:Q,62:X}),e(M,[2,62]),e(M,[2,63]),e(M,[2,64]),e(M,[2,65]),e(M,[2,66]),e(xe,[2,67]),e(xe,[2,68]),{8:[1,86],23:87,37:85,40:21,43:A},{16:88,84:d,86:E,87:C,88:m},{42:89,46:me},{45:[1,91]},{13:[1,92]},{13:[1,93]},{69:[1,94],71:[1,95]},{16:96,84:d,86:E,87:C,88:m},{13:Le,50:97},e(c,[2,53]),e(c,[2,102]),e(G,[2,13]),e(G,[2,14]),e(G,[2,15]),{36:[2,31]},{15:98,16:76,36:[2,9],84:d,86:E,87:C,88:m},e(be,[2,39],{11:99,12:[1,100]}),e(de,[2,7]),{9:[1,101]},e(J,[2,48]),{16:35,17:102,18:36,84:d,86:E,87:C,88:m,89:k},{13:[1,104],16:35,17:103,18:36,84:d,86:E,87:C,88:m,89:k},e(H,[2,60],{56:105,58:Y,59:K,60:j,61:Q,62:X}),e(H,[2,59]),{38:[1,106]},{23:87,37:107,40:21,43:A},{8:[1,108],38:[2,32]},e(q,[2,36],{36:[1,109]}),{38:[1,110]},{38:[2,42],42:111,46:me},{16:35,17:112,18:36,84:d,86:E,87:C,88:m,89:k},e(c,[2,69],{13:[1,113]}),e(c,[2,71],{13:[1,115],67:[1,114]}),e(c,[2,75],{13:[1,116],70:[1,117]}),{13:[1,118]},e(c,[2,83]),e(c,[2,52]),{36:[2,10]},e(be,[2,40]),{13:[1,119]},{1:[2,4]},e(J,[2,50]),e(J,[2,49]),{16:35,17:120,18:36,84:d,86:E,87:C,88:m,89:k},e(H,[2,58]),e(c,[2,29]),{38:[1,121]},{23:87,37:122,38:[2,33],40:21,43:A},{42:123,46:me},e(q,[2,37]),{38:[2,43]},e(c,[2,41]),e(c,[2,70]),e(c,[2,72]),e(c,[2,73],{67:[1,124]}),e(c,[2,76]),e(c,[2,77],{13:[1,125]}),e(c,[2,79],{13:[1,127],67:[1,126]}),{14:[1,128]},e(J,[2,51]),e(c,[2,30]),{38:[2,34]},{38:[1,129]},e(c,[2,74]),e(c,[2,78]),e(c,[2,80]),e(c,[2,81],{67:[1,130]}),e(be,[2,8]),e(q,[2,38]),e(c,[2,82])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],75:[2,31],98:[2,10],101:[2,4],111:[2,43],122:[2,34]},parseError:function(u,a){if(a.recoverable)this.trace(u);else{var o=new Error(u);throw o.hash=a,o}},parse:function(u){var a=this,o=[0],i=[],p=[null],t=[],U=this.table,s="",Z=0,Ie=0,Ze=2,Oe=1,$e=t.slice.call(arguments,1),b=Object.create(this.lexer),I={yy:{}};for(var Te in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Te)&&(I.yy[Te]=this.yy[Te]);b.setInput(u,I.yy),I.yy.lexer=b,I.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var Fe=b.yylloc;t.push(Fe);var et=b.options&&b.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function tt(){var v;return v=i.pop()||b.lex()||Oe,typeof v!="number"&&(v instanceof Array&&(i=v,v=i.pop()),v=a.symbols_[v]||v),v}for(var T,O,y,ye,w={},$,N,Re,ee;;){if(O=o[o.length-1],this.defaultActions[O]?y=this.defaultActions[O]:((T===null||typeof T>"u")&&(T=tt()),y=U[O]&&U[O][T]),typeof y>"u"||!y.length||!y[0]){var De="";ee=[];for($ in U[O])this.terminals_[$]&&$>Ze&&ee.push("'"+this.terminals_[$]+"'");b.showPosition?De="Parse error on line "+(Z+1)+`: +`+b.showPosition()+` +Expecting `+ee.join(", ")+", got '"+(this.terminals_[T]||T)+"'":De="Parse error on line "+(Z+1)+": Unexpected "+(T==Oe?"end of input":"'"+(this.terminals_[T]||T)+"'"),this.parseError(De,{text:b.match,token:this.terminals_[T]||T,line:b.yylineno,loc:Fe,expected:ee})}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+T);switch(y[0]){case 1:o.push(T),p.push(b.yytext),t.push(b.yylloc),o.push(y[1]),T=null,Ie=b.yyleng,s=b.yytext,Z=b.yylineno,Fe=b.yylloc;break;case 2:if(N=this.productions_[y[1]][1],w.$=p[p.length-N],w._$={first_line:t[t.length-(N||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(N||1)].first_column,last_column:t[t.length-1].last_column},et&&(w._$.range=[t[t.length-(N||1)].range[0],t[t.length-1].range[1]]),ye=this.performAction.apply(w,[s,Ie,Z,I.yy,y[1],p,t].concat($e)),typeof ye<"u")return ye;N&&(o=o.slice(0,-1*N*2),p=p.slice(0,-1*N),t=t.slice(0,-1*N)),o.push(this.productions_[y[1]][0]),p.push(w.$),t.push(w._$),Re=U[o[o.length-2]][o[o.length-1]],o.push(Re);break;case 3:return!0}}return!0}},Je=function(){var L={EOF:1,parseError:function(a,o){if(this.yy.parser)this.yy.parser.parseError(a,o);else throw new Error(a)},setInput:function(u,a){return this.yy=a||this.yy||{},this._input=u,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var a=u.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},unput:function(u){var a=u.length,o=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),o.length-1&&(this.yylineno-=o.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:o?(o.length===i.length?this.yylloc.first_column:0)+i[i.length-o.length].length-o[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(u){this.unput(this.match.slice(u))},pastInput:function(){var u=this.matched.substr(0,this.matched.length-this.match.length);return(u.length>20?"...":"")+u.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var u=this.match;return u.length<20&&(u+=this._input.substr(0,20-u.length)),(u.substr(0,20)+(u.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var u=this.pastInput(),a=new Array(u.length+1).join("-");return u+this.upcomingInput()+` +`+a+"^"},test_match:function(u,a){var o,i,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),i=u[0].match(/(?:\r\n?|\n).*/g),i&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(u[0].length),this.matched+=u[0],o=this.performAction.call(this,this.yy,this,a,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),o)return o;if(this._backtrack){for(var t in p)this[t]=p[t];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var u,a,o,i;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),t=0;ta[0].length)){if(a=o,i=t,this.options.backtrack_lexer){if(u=this.test_match(o,p[t]),u!==!1)return u;if(this._backtrack){a=!1;continue}else return!1}else if(!this.options.flex)break}return a?(u=this.test_match(a,p[i]),u!==!1?u:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return a||this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){var a=this.conditionStack.length-1;return a>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(a){return a=this.conditionStack.length-1-Math.abs(a||0),a>=0?this.conditionStack[a]:"INITIAL"},pushState:function(a){this.begin(a)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(a,o,i,p){switch(i){case 0:return 52;case 1:return 53;case 2:return 54;case 3:return 55;case 4:break;case 5:break;case 6:return this.begin("acc_title"),30;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),32;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 69;case 22:this.popState();break;case 23:return 70;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return this.begin("namespace"),39;case 28:return this.popState(),8;case 29:break;case 30:return this.begin("namespace-body"),36;case 31:return this.popState(),38;case 32:return"EOF_IN_STRUCT";case 33:return 8;case 34:break;case 35:return"EDGE_STATE";case 36:return this.begin("class"),43;case 37:return this.popState(),8;case 38:break;case 39:return this.popState(),this.popState(),38;case 40:return this.begin("class-body"),36;case 41:return this.popState(),38;case 42:return"EOF_IN_STRUCT";case 43:return"EDGE_STATE";case 44:return"OPEN_IN_STRUCT";case 45:break;case 46:return"MEMBER";case 47:return 72;case 48:return 65;case 49:return 66;case 50:return 68;case 51:return 49;case 52:return 51;case 53:return 44;case 54:return 45;case 55:return 71;case 56:this.popState();break;case 57:return"GENERICTYPE";case 58:this.begin("generic");break;case 59:this.popState();break;case 60:return"BQUOTE_STR";case 61:this.begin("bqstring");break;case 62:return 67;case 63:return 67;case 64:return 67;case 65:return 67;case 66:return 59;case 67:return 59;case 68:return 61;case 69:return 61;case 70:return 60;case 71:return 58;case 72:return 62;case 73:return 63;case 74:return 64;case 75:return 21;case 76:return 41;case 77:return 84;case 78:return"DOT";case 79:return"PLUS";case 80:return 81;case 81:return"EQUALS";case 82:return"EQUALS";case 83:return 88;case 84:return 12;case 85:return 14;case 86:return"PUNCTUATION";case 87:return 87;case 88:return 86;case 89:return 83;case 90:return 9}},rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,31,32,33,34,35,36,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},namespace:{rules:[26,27,28,29,30,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},"class-body":{rules:[26,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},class:{rules:[26,37,38,39,40,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},acc_descr:{rules:[9,26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},acc_title:{rules:[7,26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},callback_args:{rules:[22,23,26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},callback_name:{rules:[19,20,21,26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},href:{rules:[26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},struct:{rules:[26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},generic:{rules:[26,47,48,49,50,51,52,53,54,55,56,57,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},bqstring:{rules:[26,47,48,49,50,51,52,53,54,55,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},string:{rules:[24,25,26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,36,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!0}}};return L}();ge.lexer=Je;function ke(){this.yy={}}return ke.prototype=ge,ge.Parser=ke,new ke}();_e.parser=_e;var vt=_e,je=["#","+","~","-",""],se=class{constructor(n,r){this.memberType=r,this.visibility="",this.classifier="";let h=Pe(n,F());this.parseMember(h)}getDisplayDetails(){let n=this.visibility+te(this.id);this.memberType==="method"&&(n+=`(${te(this.parameters.trim())})`,this.returnType&&(n+=" : "+te(this.returnType))),n=n.trim();let r=this.parseClassifier();return{displayText:n,cssStyle:r}}parseMember(n){let r="";if(this.memberType==="method"){let h=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/,l=n.match(h);if(l){let A=l[1]?l[1].trim():"";if(je.includes(A)&&(this.visibility=A),this.id=l[2].trim(),this.parameters=l[3]?l[3].trim():"",r=l[4]?l[4].trim():"",this.returnType=l[5]?l[5].trim():"",r===""){let g=this.returnType.substring(this.returnType.length-1);g.match(/[$*]/)&&(r=g,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let h=n.length,l=n.substring(0,1),A=n.substring(h-1);je.includes(l)&&(this.visibility=l),A.match(/[*?]/)&&(r=A),this.id=n.substring(this.visibility===""?0:1,r===""?h:h-1)}this.classifier=r}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}},ue="classId-",Ne=[],f={},ie=[],Qe=0,x={},Se=0,z=[],R=e=>S.sanitizeText(e,F()),V=function(e){let n=S.sanitizeText(e,F()),r="",h=n;if(n.indexOf("~")>0){let l=n.split("~");h=R(l[0]),r=R(l[1])}return{className:h,type:r}},st=function(e,n){let r=S.sanitizeText(e,F());n&&(n=R(n));let{className:h}=V(r);f[h].label=n},ne=function(e){let n=S.sanitizeText(e,F()),{className:r,type:h}=V(n);if(Object.hasOwn(f,r))return;let l=S.sanitizeText(r,F());f[l]={id:l,type:h,label:l,cssClasses:[],methods:[],members:[],annotations:[],domId:ue+l+"-"+Qe},Qe++},Xe=function(e){let n=S.sanitizeText(e,F());if(n in f)return f[n].domId;throw new Error("Class not found: "+n)},it=function(){Ne=[],f={},ie=[],z=[],z.push(We),x={},Se=0,Ve()},nt=function(e){return f[e]},ut=function(){return f},rt=function(){return Ne},at=function(){return ie},lt=function(e){we.debug("Adding relation: "+JSON.stringify(e)),ne(e.id1),ne(e.id2),e.id1=V(e.id1).className,e.id2=V(e.id2).className,e.relationTitle1=S.sanitizeText(e.relationTitle1.trim(),F()),e.relationTitle2=S.sanitizeText(e.relationTitle2.trim(),F()),Ne.push(e)},ct=function(e,n){let r=V(e).className;f[r].annotations.push(n)},qe=function(e,n){ne(e);let r=V(e).className,h=f[r];if(typeof n=="string"){let l=n.trim();l.startsWith("<<")&&l.endsWith(">>")?h.annotations.push(R(l.substring(2,l.length-2))):l.indexOf(")")>0?h.methods.push(new se(l,"method")):l&&h.members.push(new se(l,"attribute"))}},ot=function(e,n){Array.isArray(n)&&(n.reverse(),n.forEach(r=>qe(e,r)))},ht=function(e,n){let r={id:`note${ie.length}`,class:n,text:e};ie.push(r)},At=function(e){return e.startsWith(":")&&(e=e.substring(1)),R(e.trim())},ve=function(e,n){e.split(",").forEach(function(r){let h=r;r[0].match(/\d/)&&(h=ue+h),f[h]!==void 0&&f[h].cssClasses.push(n)})},pt=function(e,n){e.split(",").forEach(function(r){n!==void 0&&(f[r].tooltip=R(n))})},ft=function(e,n){return n?x[n].classes[e].tooltip:f[e].tooltip},dt=function(e,n,r){let h=F();e.split(",").forEach(function(l){let A=l;l[0].match(/\d/)&&(A=ue+A),f[A]!==void 0&&(f[A].link=Be.formatUrl(n,h),h.securityLevel==="sandbox"?f[A].linkTarget="_top":typeof r=="string"?f[A].linkTarget=R(r):f[A].linkTarget="_blank")}),ve(e,"clickable")},Et=function(e,n,r){e.split(",").forEach(function(h){Ct(h,n,r),f[h].haveCallback=!0}),ve(e,"clickable")},Ct=function(e,n,r){let h=S.sanitizeText(e,F());if(F().securityLevel!=="loose"||n===void 0)return;let A=h;if(f[A]!==void 0){let g=Xe(A),D=[];if(typeof r=="string"){D=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let B=0;B")),l.classed("hover",!0)}).on("mouseout",function(){n.transition().duration(500).style("opacity",0),P(this).classed("hover",!1)})};z.push(We);var He="TB",kt=()=>He,Tt=e=>{He=e},Ft=function(e){x[e]===void 0&&(x[e]={id:e,classes:{},children:{},domId:ue+e+"-"+Se},Se++)},yt=function(e){return x[e]},Dt=function(){return x},Bt=function(e,n){x[e]!==void 0&&n.map(r=>{f[r].parent=e,x[e].classes[r]=f[r]})},Lt={setAccTitle:Ge,getAccTitle:Me,getAccDescription:ze,setAccDescription:Ue,getConfig:()=>F().class,addClass:ne,bindFunctions:mt,clear:it,getClass:nt,getClasses:ut,getNotes:at,addAnnotation:ct,addNote:ht,getRelations:rt,addRelation:lt,getDirection:kt,setDirection:Tt,addMember:qe,addMembers:ot,cleanupLabel:At,lineType:bt,relationType:gt,setClickEvent:Et,setCssClass:ve,setLink:dt,getTooltip:ft,setTooltip:pt,lookUpDomId:Xe,setDiagramTitle:Ye,getDiagramTitle:Ke,setClassLabel:st,addNamespace:Ft,addClassesToNamespace:Bt,getNamespace:yt,getNamespaces:Dt},_t=e=>`g.classGroup text { + fill: ${e.nodeBorder}; + fill: ${e.classText}; + stroke: none; + font-family: ${e.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + +.nodeLabel, .edgeLabel { + color: ${e.classText}; +} +.edgeLabel .label rect { + fill: ${e.mainBkg}; +} +.label text { + fill: ${e.classText}; +} +.edgeLabel .label span { + background: ${e.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + + +.divider { + stroke: ${e.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; +} + +g.classGroup line { + stroke: ${e.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${e.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${e.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${e.lineColor}; + stroke-width: 1; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +#compositionStart, .composition { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#compositionEnd, .composition { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#extensionStart, .extension { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#extensionEnd, .extension { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#aggregationStart, .aggregation { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#aggregationEnd, .aggregation { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#lollipopStart, .lollipop { + fill: ${e.mainBkg} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#lollipopEnd, .lollipop { + fill: ${e.mainBkg} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; +} +`,xt=_t;export{vt as a,Lt as b,xt as c}; +//# sourceMappingURL=chunk-RE5CTVCE.min.js.map diff --git a/public/chunk-RE5CTVCE.min.js.map b/public/chunk-RE5CTVCE.min.js.map new file mode 100644 index 0000000..fb0e42f --- /dev/null +++ b/public/chunk-RE5CTVCE.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/mermaid/dist/styles-c47180b5.js"], + "sourcesContent": ["import { select } from \"d3\";\nimport { d as sanitizeText$1, c as getConfig, v as parseGenericTypes, s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, q as setDiagramTitle, r as getDiagramTitle, e as common, t as clear$1, l as log, u as utils } from \"./mermaid-485fd1a4.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 16], $V1 = [1, 17], $V2 = [1, 18], $V3 = [1, 37], $V4 = [1, 38], $V5 = [1, 24], $V6 = [1, 22], $V7 = [1, 23], $V8 = [1, 29], $V9 = [1, 30], $Va = [1, 31], $Vb = [1, 32], $Vc = [1, 33], $Vd = [1, 34], $Ve = [1, 25], $Vf = [1, 26], $Vg = [1, 27], $Vh = [1, 28], $Vi = [1, 42], $Vj = [1, 39], $Vk = [1, 40], $Vl = [1, 41], $Vm = [1, 43], $Vn = [1, 9], $Vo = [1, 8, 9], $Vp = [1, 54], $Vq = [1, 55], $Vr = [1, 56], $Vs = [1, 57], $Vt = [1, 58], $Vu = [1, 59], $Vv = [1, 60], $Vw = [1, 8, 9, 38], $Vx = [1, 71], $Vy = [1, 8, 9, 12, 13, 21, 36, 38, 41, 58, 59, 60, 61, 62, 63, 64, 69, 71], $Vz = [1, 8, 9, 12, 13, 19, 21, 36, 38, 41, 45, 58, 59, 60, 61, 62, 63, 64, 69, 71, 84, 86, 87, 88, 89], $VA = [13, 84, 86, 87, 88, 89], $VB = [13, 63, 64, 84, 86, 87, 88, 89], $VC = [13, 58, 59, 60, 61, 62, 84, 86, 87, 88, 89], $VD = [1, 90], $VE = [1, 8, 9, 36, 38, 41], $VF = [1, 8, 9, 21];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"statements\": 5, \"graphConfig\": 6, \"CLASS_DIAGRAM\": 7, \"NEWLINE\": 8, \"EOF\": 9, \"statement\": 10, \"classLabel\": 11, \"SQS\": 12, \"STR\": 13, \"SQE\": 14, \"namespaceName\": 15, \"alphaNumToken\": 16, \"className\": 17, \"classLiteralName\": 18, \"GENERICTYPE\": 19, \"relationStatement\": 20, \"LABEL\": 21, \"namespaceStatement\": 22, \"classStatement\": 23, \"memberStatement\": 24, \"annotationStatement\": 25, \"clickStatement\": 26, \"cssClassStatement\": 27, \"noteStatement\": 28, \"direction\": 29, \"acc_title\": 30, \"acc_title_value\": 31, \"acc_descr\": 32, \"acc_descr_value\": 33, \"acc_descr_multiline_value\": 34, \"namespaceIdentifier\": 35, \"STRUCT_START\": 36, \"classStatements\": 37, \"STRUCT_STOP\": 38, \"NAMESPACE\": 39, \"classIdentifier\": 40, \"STYLE_SEPARATOR\": 41, \"members\": 42, \"CLASS\": 43, \"ANNOTATION_START\": 44, \"ANNOTATION_END\": 45, \"MEMBER\": 46, \"SEPARATOR\": 47, \"relation\": 48, \"NOTE_FOR\": 49, \"noteText\": 50, \"NOTE\": 51, \"direction_tb\": 52, \"direction_bt\": 53, \"direction_rl\": 54, \"direction_lr\": 55, \"relationType\": 56, \"lineType\": 57, \"AGGREGATION\": 58, \"EXTENSION\": 59, \"COMPOSITION\": 60, \"DEPENDENCY\": 61, \"LOLLIPOP\": 62, \"LINE\": 63, \"DOTTED_LINE\": 64, \"CALLBACK\": 65, \"LINK\": 66, \"LINK_TARGET\": 67, \"CLICK\": 68, \"CALLBACK_NAME\": 69, \"CALLBACK_ARGS\": 70, \"HREF\": 71, \"CSSCLASS\": 72, \"commentToken\": 73, \"textToken\": 74, \"graphCodeTokens\": 75, \"textNoTagsToken\": 76, \"TAGSTART\": 77, \"TAGEND\": 78, \"==\": 79, \"--\": 80, \"PCT\": 81, \"DEFAULT\": 82, \"SPACE\": 83, \"MINUS\": 84, \"keywords\": 85, \"UNICODE_TEXT\": 86, \"NUM\": 87, \"ALPHA\": 88, \"BQUOTE_STR\": 89, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 7: \"CLASS_DIAGRAM\", 8: \"NEWLINE\", 9: \"EOF\", 12: \"SQS\", 13: \"STR\", 14: \"SQE\", 19: \"GENERICTYPE\", 21: \"LABEL\", 30: \"acc_title\", 31: \"acc_title_value\", 32: \"acc_descr\", 33: \"acc_descr_value\", 34: \"acc_descr_multiline_value\", 36: \"STRUCT_START\", 38: \"STRUCT_STOP\", 39: \"NAMESPACE\", 41: \"STYLE_SEPARATOR\", 43: \"CLASS\", 44: \"ANNOTATION_START\", 45: \"ANNOTATION_END\", 46: \"MEMBER\", 47: \"SEPARATOR\", 49: \"NOTE_FOR\", 51: \"NOTE\", 52: \"direction_tb\", 53: \"direction_bt\", 54: \"direction_rl\", 55: \"direction_lr\", 58: \"AGGREGATION\", 59: \"EXTENSION\", 60: \"COMPOSITION\", 61: \"DEPENDENCY\", 62: \"LOLLIPOP\", 63: \"LINE\", 64: \"DOTTED_LINE\", 65: \"CALLBACK\", 66: \"LINK\", 67: \"LINK_TARGET\", 68: \"CLICK\", 69: \"CALLBACK_NAME\", 70: \"CALLBACK_ARGS\", 71: \"HREF\", 72: \"CSSCLASS\", 75: \"graphCodeTokens\", 77: \"TAGSTART\", 78: \"TAGEND\", 79: \"==\", 80: \"--\", 81: \"PCT\", 82: \"DEFAULT\", 83: \"SPACE\", 84: \"MINUS\", 85: \"keywords\", 86: \"UNICODE_TEXT\", 87: \"NUM\", 88: \"ALPHA\", 89: \"BQUOTE_STR\" },\n productions_: [0, [3, 1], [3, 1], [4, 1], [6, 4], [5, 1], [5, 2], [5, 3], [11, 3], [15, 1], [15, 2], [17, 1], [17, 1], [17, 2], [17, 2], [17, 2], [10, 1], [10, 2], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [10, 1], [22, 4], [22, 5], [35, 2], [37, 1], [37, 2], [37, 3], [23, 1], [23, 3], [23, 4], [23, 6], [40, 2], [40, 3], [25, 4], [42, 1], [42, 2], [24, 1], [24, 2], [24, 1], [24, 1], [20, 3], [20, 4], [20, 4], [20, 5], [28, 3], [28, 2], [29, 1], [29, 1], [29, 1], [29, 1], [48, 3], [48, 2], [48, 2], [48, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [57, 1], [57, 1], [26, 3], [26, 4], [26, 3], [26, 4], [26, 4], [26, 5], [26, 3], [26, 4], [26, 4], [26, 5], [26, 4], [26, 5], [26, 5], [26, 6], [27, 3], [73, 1], [73, 1], [74, 1], [74, 1], [74, 1], [74, 1], [74, 1], [74, 1], [74, 1], [76, 1], [76, 1], [76, 1], [76, 1], [16, 1], [16, 1], [16, 1], [16, 1], [18, 1], [50, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 8:\n this.$ = $$[$0 - 1];\n break;\n case 9:\n case 11:\n case 12:\n this.$ = $$[$0];\n break;\n case 10:\n case 13:\n this.$ = $$[$0 - 1] + $$[$0];\n break;\n case 14:\n case 15:\n this.$ = $$[$0 - 1] + \"~\" + $$[$0] + \"~\";\n break;\n case 16:\n yy.addRelation($$[$0]);\n break;\n case 17:\n $$[$0 - 1].title = yy.cleanupLabel($$[$0]);\n yy.addRelation($$[$0 - 1]);\n break;\n case 26:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 27:\n case 28:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 29:\n yy.addClassesToNamespace($$[$0 - 3], $$[$0 - 1]);\n break;\n case 30:\n yy.addClassesToNamespace($$[$0 - 4], $$[$0 - 1]);\n break;\n case 31:\n this.$ = $$[$0];\n yy.addNamespace($$[$0]);\n break;\n case 32:\n this.$ = [$$[$0]];\n break;\n case 33:\n this.$ = [$$[$0 - 1]];\n break;\n case 34:\n $$[$0].unshift($$[$0 - 2]);\n this.$ = $$[$0];\n break;\n case 36:\n yy.setCssClass($$[$0 - 2], $$[$0]);\n break;\n case 37:\n yy.addMembers($$[$0 - 3], $$[$0 - 1]);\n break;\n case 38:\n yy.setCssClass($$[$0 - 5], $$[$0 - 3]);\n yy.addMembers($$[$0 - 5], $$[$0 - 1]);\n break;\n case 39:\n this.$ = $$[$0];\n yy.addClass($$[$0]);\n break;\n case 40:\n this.$ = $$[$0 - 1];\n yy.addClass($$[$0 - 1]);\n yy.setClassLabel($$[$0 - 1], $$[$0]);\n break;\n case 41:\n yy.addAnnotation($$[$0], $$[$0 - 2]);\n break;\n case 42:\n this.$ = [$$[$0]];\n break;\n case 43:\n $$[$0].push($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 44:\n break;\n case 45:\n yy.addMember($$[$0 - 1], yy.cleanupLabel($$[$0]));\n break;\n case 46:\n break;\n case 47:\n break;\n case 48:\n this.$ = { \"id1\": $$[$0 - 2], \"id2\": $$[$0], relation: $$[$0 - 1], relationTitle1: \"none\", relationTitle2: \"none\" };\n break;\n case 49:\n this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 1], relationTitle1: $$[$0 - 2], relationTitle2: \"none\" };\n break;\n case 50:\n this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: \"none\", relationTitle2: $$[$0 - 1] };\n break;\n case 51:\n this.$ = { id1: $$[$0 - 4], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: $$[$0 - 3], relationTitle2: $$[$0 - 1] };\n break;\n case 52:\n yy.addNote($$[$0], $$[$0 - 1]);\n break;\n case 53:\n yy.addNote($$[$0]);\n break;\n case 54:\n yy.setDirection(\"TB\");\n break;\n case 55:\n yy.setDirection(\"BT\");\n break;\n case 56:\n yy.setDirection(\"RL\");\n break;\n case 57:\n yy.setDirection(\"LR\");\n break;\n case 58:\n this.$ = { type1: $$[$0 - 2], type2: $$[$0], lineType: $$[$0 - 1] };\n break;\n case 59:\n this.$ = { type1: \"none\", type2: $$[$0], lineType: $$[$0 - 1] };\n break;\n case 60:\n this.$ = { type1: $$[$0 - 1], type2: \"none\", lineType: $$[$0] };\n break;\n case 61:\n this.$ = { type1: \"none\", type2: \"none\", lineType: $$[$0] };\n break;\n case 62:\n this.$ = yy.relationType.AGGREGATION;\n break;\n case 63:\n this.$ = yy.relationType.EXTENSION;\n break;\n case 64:\n this.$ = yy.relationType.COMPOSITION;\n break;\n case 65:\n this.$ = yy.relationType.DEPENDENCY;\n break;\n case 66:\n this.$ = yy.relationType.LOLLIPOP;\n break;\n case 67:\n this.$ = yy.lineType.LINE;\n break;\n case 68:\n this.$ = yy.lineType.DOTTED_LINE;\n break;\n case 69:\n case 75:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 1], $$[$0]);\n break;\n case 70:\n case 76:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 2], $$[$0]);\n break;\n case 71:\n this.$ = $$[$0 - 2];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 72:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 73:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 2], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 2], $$[$0]);\n break;\n case 74:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]);\n yy.setTooltip($$[$0 - 3], $$[$0 - 1]);\n break;\n case 77:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 78:\n this.$ = $$[$0 - 4];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 79:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 2], $$[$0]);\n break;\n case 80:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 3], $$[$0 - 1], $$[$0]);\n break;\n case 81:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 3], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 82:\n this.$ = $$[$0 - 5];\n yy.setLink($$[$0 - 4], $$[$0 - 2], $$[$0]);\n yy.setTooltip($$[$0 - 4], $$[$0 - 1]);\n break;\n case 83:\n yy.setCssClass($$[$0 - 1], $$[$0]);\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: 4, 7: [1, 6], 10: 5, 16: 35, 17: 19, 18: 36, 20: 7, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 27: 13, 28: 14, 29: 15, 30: $V0, 32: $V1, 34: $V2, 35: 20, 39: $V3, 40: 21, 43: $V4, 44: $V5, 46: $V6, 47: $V7, 49: $V8, 51: $V9, 52: $Va, 53: $Vb, 54: $Vc, 55: $Vd, 65: $Ve, 66: $Vf, 68: $Vg, 72: $Vh, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3] }, o($Vn, [2, 5], { 8: [1, 44] }), { 8: [1, 45] }, o($Vo, [2, 16], { 21: [1, 46] }), o($Vo, [2, 18]), o($Vo, [2, 19]), o($Vo, [2, 20]), o($Vo, [2, 21]), o($Vo, [2, 22]), o($Vo, [2, 23]), o($Vo, [2, 24]), o($Vo, [2, 25]), { 31: [1, 47] }, { 33: [1, 48] }, o($Vo, [2, 28]), o($Vo, [2, 44], { 48: 49, 56: 52, 57: 53, 13: [1, 50], 21: [1, 51], 58: $Vp, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt, 63: $Vu, 64: $Vv }), { 36: [1, 61] }, o($Vw, [2, 35], { 36: [1, 63], 41: [1, 62] }), o($Vo, [2, 46]), o($Vo, [2, 47]), { 16: 64, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl }, { 16: 35, 17: 65, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 16: 35, 17: 66, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 16: 35, 17: 67, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 13: [1, 68] }, { 16: 35, 17: 69, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 13: $Vx, 50: 70 }, o($Vo, [2, 54]), o($Vo, [2, 55]), o($Vo, [2, 56]), o($Vo, [2, 57]), o($Vy, [2, 11], { 16: 35, 18: 36, 17: 72, 19: [1, 73], 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }), o($Vy, [2, 12], { 19: [1, 74] }), { 15: 75, 16: 76, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl }, { 16: 35, 17: 77, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, o($Vz, [2, 97]), o($Vz, [2, 98]), o($Vz, [2, 99]), o($Vz, [2, 100]), o([1, 8, 9, 12, 13, 19, 21, 36, 38, 41, 58, 59, 60, 61, 62, 63, 64, 69, 71], [2, 101]), o($Vn, [2, 6], { 10: 5, 20: 7, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 27: 13, 28: 14, 29: 15, 17: 19, 35: 20, 40: 21, 16: 35, 18: 36, 5: 78, 30: $V0, 32: $V1, 34: $V2, 39: $V3, 43: $V4, 44: $V5, 46: $V6, 47: $V7, 49: $V8, 51: $V9, 52: $Va, 53: $Vb, 54: $Vc, 55: $Vd, 65: $Ve, 66: $Vf, 68: $Vg, 72: $Vh, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }), { 5: 79, 10: 5, 16: 35, 17: 19, 18: 36, 20: 7, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 27: 13, 28: 14, 29: 15, 30: $V0, 32: $V1, 34: $V2, 35: 20, 39: $V3, 40: 21, 43: $V4, 44: $V5, 46: $V6, 47: $V7, 49: $V8, 51: $V9, 52: $Va, 53: $Vb, 54: $Vc, 55: $Vd, 65: $Ve, 66: $Vf, 68: $Vg, 72: $Vh, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, o($Vo, [2, 17]), o($Vo, [2, 26]), o($Vo, [2, 27]), { 13: [1, 81], 16: 35, 17: 80, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 48: 82, 56: 52, 57: 53, 58: $Vp, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt, 63: $Vu, 64: $Vv }, o($Vo, [2, 45]), { 57: 83, 63: $Vu, 64: $Vv }, o($VA, [2, 61], { 56: 84, 58: $Vp, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt }), o($VB, [2, 62]), o($VB, [2, 63]), o($VB, [2, 64]), o($VB, [2, 65]), o($VB, [2, 66]), o($VC, [2, 67]), o($VC, [2, 68]), { 8: [1, 86], 23: 87, 37: 85, 40: 21, 43: $V4 }, { 16: 88, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl }, { 42: 89, 46: $VD }, { 45: [1, 91] }, { 13: [1, 92] }, { 13: [1, 93] }, { 69: [1, 94], 71: [1, 95] }, { 16: 96, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl }, { 13: $Vx, 50: 97 }, o($Vo, [2, 53]), o($Vo, [2, 102]), o($Vy, [2, 13]), o($Vy, [2, 14]), o($Vy, [2, 15]), { 36: [2, 31] }, { 15: 98, 16: 76, 36: [2, 9], 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl }, o($VE, [2, 39], { 11: 99, 12: [1, 100] }), o($Vn, [2, 7]), { 9: [1, 101] }, o($VF, [2, 48]), { 16: 35, 17: 102, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 13: [1, 104], 16: 35, 17: 103, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, o($VA, [2, 60], { 56: 105, 58: $Vp, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt }), o($VA, [2, 59]), { 38: [1, 106] }, { 23: 87, 37: 107, 40: 21, 43: $V4 }, { 8: [1, 108], 38: [2, 32] }, o($Vw, [2, 36], { 36: [1, 109] }), { 38: [1, 110] }, { 38: [2, 42], 42: 111, 46: $VD }, { 16: 35, 17: 112, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, o($Vo, [2, 69], { 13: [1, 113] }), o($Vo, [2, 71], { 13: [1, 115], 67: [1, 114] }), o($Vo, [2, 75], { 13: [1, 116], 70: [1, 117] }), { 13: [1, 118] }, o($Vo, [2, 83]), o($Vo, [2, 52]), { 36: [2, 10] }, o($VE, [2, 40]), { 13: [1, 119] }, { 1: [2, 4] }, o($VF, [2, 50]), o($VF, [2, 49]), { 16: 35, 17: 120, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, o($VA, [2, 58]), o($Vo, [2, 29]), { 38: [1, 121] }, { 23: 87, 37: 122, 38: [2, 33], 40: 21, 43: $V4 }, { 42: 123, 46: $VD }, o($Vw, [2, 37]), { 38: [2, 43] }, o($Vo, [2, 41]), o($Vo, [2, 70]), o($Vo, [2, 72]), o($Vo, [2, 73], { 67: [1, 124] }), o($Vo, [2, 76]), o($Vo, [2, 77], { 13: [1, 125] }), o($Vo, [2, 79], { 13: [1, 127], 67: [1, 126] }), { 14: [1, 128] }, o($VF, [2, 51]), o($Vo, [2, 30]), { 38: [2, 34] }, { 38: [1, 129] }, o($Vo, [2, 74]), o($Vo, [2, 78]), o($Vo, [2, 80]), o($Vo, [2, 81], { 67: [1, 130] }), o($VE, [2, 8]), o($Vw, [2, 38]), o($Vo, [2, 82])],\n defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 3], 75: [2, 31], 98: [2, 10], 101: [2, 4], 111: [2, 43], 122: [2, 34] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 52;\n case 1:\n return 53;\n case 2:\n return 54;\n case 3:\n return 55;\n case 4:\n break;\n case 5:\n break;\n case 6:\n this.begin(\"acc_title\");\n return 30;\n case 7:\n this.popState();\n return \"acc_title_value\";\n case 8:\n this.begin(\"acc_descr\");\n return 32;\n case 9:\n this.popState();\n return \"acc_descr_value\";\n case 10:\n this.begin(\"acc_descr_multiline\");\n break;\n case 11:\n this.popState();\n break;\n case 12:\n return \"acc_descr_multiline_value\";\n case 13:\n return 8;\n case 14:\n break;\n case 15:\n return 7;\n case 16:\n return 7;\n case 17:\n return \"EDGE_STATE\";\n case 18:\n this.begin(\"callback_name\");\n break;\n case 19:\n this.popState();\n break;\n case 20:\n this.popState();\n this.begin(\"callback_args\");\n break;\n case 21:\n return 69;\n case 22:\n this.popState();\n break;\n case 23:\n return 70;\n case 24:\n this.popState();\n break;\n case 25:\n return \"STR\";\n case 26:\n this.begin(\"string\");\n break;\n case 27:\n this.begin(\"namespace\");\n return 39;\n case 28:\n this.popState();\n return 8;\n case 29:\n break;\n case 30:\n this.begin(\"namespace-body\");\n return 36;\n case 31:\n this.popState();\n return 38;\n case 32:\n return \"EOF_IN_STRUCT\";\n case 33:\n return 8;\n case 34:\n break;\n case 35:\n return \"EDGE_STATE\";\n case 36:\n this.begin(\"class\");\n return 43;\n case 37:\n this.popState();\n return 8;\n case 38:\n break;\n case 39:\n this.popState();\n this.popState();\n return 38;\n case 40:\n this.begin(\"class-body\");\n return 36;\n case 41:\n this.popState();\n return 38;\n case 42:\n return \"EOF_IN_STRUCT\";\n case 43:\n return \"EDGE_STATE\";\n case 44:\n return \"OPEN_IN_STRUCT\";\n case 45:\n break;\n case 46:\n return \"MEMBER\";\n case 47:\n return 72;\n case 48:\n return 65;\n case 49:\n return 66;\n case 50:\n return 68;\n case 51:\n return 49;\n case 52:\n return 51;\n case 53:\n return 44;\n case 54:\n return 45;\n case 55:\n return 71;\n case 56:\n this.popState();\n break;\n case 57:\n return \"GENERICTYPE\";\n case 58:\n this.begin(\"generic\");\n break;\n case 59:\n this.popState();\n break;\n case 60:\n return \"BQUOTE_STR\";\n case 61:\n this.begin(\"bqstring\");\n break;\n case 62:\n return 67;\n case 63:\n return 67;\n case 64:\n return 67;\n case 65:\n return 67;\n case 66:\n return 59;\n case 67:\n return 59;\n case 68:\n return 61;\n case 69:\n return 61;\n case 70:\n return 60;\n case 71:\n return 58;\n case 72:\n return 62;\n case 73:\n return 63;\n case 74:\n return 64;\n case 75:\n return 21;\n case 76:\n return 41;\n case 77:\n return 84;\n case 78:\n return \"DOT\";\n case 79:\n return \"PLUS\";\n case 80:\n return 81;\n case 81:\n return \"EQUALS\";\n case 82:\n return \"EQUALS\";\n case 83:\n return 88;\n case 84:\n return 12;\n case 85:\n return 14;\n case 86:\n return \"PUNCTUATION\";\n case 87:\n return 87;\n case 88:\n return 86;\n case 89:\n return 83;\n case 90:\n return 9;\n }\n },\n rules: [/^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/, /^(?:%%[^\\n]*(\\r?\\n)*)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:classDiagram-v2\\b)/, /^(?:classDiagram\\b)/, /^(?:\\[\\*\\])/, /^(?:call[\\s]+)/, /^(?:\\([\\s]*\\))/, /^(?:\\()/, /^(?:[^(]*)/, /^(?:\\))/, /^(?:[^)]*)/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:[\"])/, /^(?:namespace\\b)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:\\[\\*\\])/, /^(?:class\\b)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:[}])/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\\[\\*\\])/, /^(?:[{])/, /^(?:[\\n])/, /^(?:[^{}\\n]*)/, /^(?:cssClass\\b)/, /^(?:callback\\b)/, /^(?:link\\b)/, /^(?:click\\b)/, /^(?:note for\\b)/, /^(?:note\\b)/, /^(?:<<)/, /^(?:>>)/, /^(?:href\\b)/, /^(?:[~])/, /^(?:[^~]*)/, /^(?:~)/, /^(?:[`])/, /^(?:[^`]+)/, /^(?:[`])/, /^(?:_self\\b)/, /^(?:_blank\\b)/, /^(?:_parent\\b)/, /^(?:_top\\b)/, /^(?:\\s*<\\|)/, /^(?:\\s*\\|>)/, /^(?:\\s*>)/, /^(?:\\s*<)/, /^(?:\\s*\\*)/, /^(?:\\s*o\\b)/, /^(?:\\s*\\(\\))/, /^(?:--)/, /^(?:\\.\\.)/, /^(?::{1}[^:\\n;]+)/, /^(?::{3})/, /^(?:-)/, /^(?:\\.)/, /^(?:\\+)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:\\w+)/, /^(?:\\[)/, /^(?:\\])/, /^(?:[!\"#$%&'*+,-.`?\\\\/])/, /^(?:[0-9]+)/, /^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/, /^(?:\\s)/, /^(?:$)/],\n conditions: { \"namespace-body\": { \"rules\": [26, 31, 32, 33, 34, 35, 36, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"namespace\": { \"rules\": [26, 27, 28, 29, 30, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"class-body\": { \"rules\": [26, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"class\": { \"rules\": [26, 37, 38, 39, 40, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [11, 12, 26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"acc_descr\": { \"rules\": [9, 26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"acc_title\": { \"rules\": [7, 26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"callback_args\": { \"rules\": [22, 23, 26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"callback_name\": { \"rules\": [19, 20, 21, 26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"href\": { \"rules\": [26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"struct\": { \"rules\": [26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"generic\": { \"rules\": [26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"bqstring\": { \"rules\": [26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"string\": { \"rules\": [24, 25, 26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 26, 27, 36, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst visibilityValues = [\"#\", \"+\", \"~\", \"-\", \"\"];\nclass ClassMember {\n constructor(input, memberType) {\n this.memberType = memberType;\n this.visibility = \"\";\n this.classifier = \"\";\n const sanitizedInput = sanitizeText$1(input, getConfig());\n this.parseMember(sanitizedInput);\n }\n getDisplayDetails() {\n let displayText = this.visibility + parseGenericTypes(this.id);\n if (this.memberType === \"method\") {\n displayText += `(${parseGenericTypes(this.parameters.trim())})`;\n if (this.returnType) {\n displayText += \" : \" + parseGenericTypes(this.returnType);\n }\n }\n displayText = displayText.trim();\n const cssStyle = this.parseClassifier();\n return {\n displayText,\n cssStyle\n };\n }\n parseMember(input) {\n let potentialClassifier = \"\";\n if (this.memberType === \"method\") {\n const methodRegEx = /([#+~-])?(.+)\\((.*)\\)([\\s$*])?(.*)([$*])?/;\n const match = input.match(methodRegEx);\n if (match) {\n const detectedVisibility = match[1] ? match[1].trim() : \"\";\n if (visibilityValues.includes(detectedVisibility)) {\n this.visibility = detectedVisibility;\n }\n this.id = match[2].trim();\n this.parameters = match[3] ? match[3].trim() : \"\";\n potentialClassifier = match[4] ? match[4].trim() : \"\";\n this.returnType = match[5] ? match[5].trim() : \"\";\n if (potentialClassifier === \"\") {\n const lastChar = this.returnType.substring(this.returnType.length - 1);\n if (lastChar.match(/[$*]/)) {\n potentialClassifier = lastChar;\n this.returnType = this.returnType.substring(0, this.returnType.length - 1);\n }\n }\n }\n } else {\n const length = input.length;\n const firstChar = input.substring(0, 1);\n const lastChar = input.substring(length - 1);\n if (visibilityValues.includes(firstChar)) {\n this.visibility = firstChar;\n }\n if (lastChar.match(/[*?]/)) {\n potentialClassifier = lastChar;\n }\n this.id = input.substring(\n this.visibility === \"\" ? 0 : 1,\n potentialClassifier === \"\" ? length : length - 1\n );\n }\n this.classifier = potentialClassifier;\n }\n parseClassifier() {\n switch (this.classifier) {\n case \"*\":\n return \"font-style:italic;\";\n case \"$\":\n return \"text-decoration:underline;\";\n default:\n return \"\";\n }\n }\n}\nconst MERMAID_DOM_ID_PREFIX = \"classId-\";\nlet relations = [];\nlet classes = {};\nlet notes = [];\nlet classCounter = 0;\nlet namespaces = {};\nlet namespaceCounter = 0;\nlet functions = [];\nconst sanitizeText = (txt) => common.sanitizeText(txt, getConfig());\nconst splitClassNameAndType = function(_id) {\n const id = common.sanitizeText(_id, getConfig());\n let genericType = \"\";\n let className = id;\n if (id.indexOf(\"~\") > 0) {\n const split = id.split(\"~\");\n className = sanitizeText(split[0]);\n genericType = sanitizeText(split[1]);\n }\n return { className, type: genericType };\n};\nconst setClassLabel = function(_id, label) {\n const id = common.sanitizeText(_id, getConfig());\n if (label) {\n label = sanitizeText(label);\n }\n const { className } = splitClassNameAndType(id);\n classes[className].label = label;\n};\nconst addClass = function(_id) {\n const id = common.sanitizeText(_id, getConfig());\n const { className, type } = splitClassNameAndType(id);\n if (Object.hasOwn(classes, className)) {\n return;\n }\n const name = common.sanitizeText(className, getConfig());\n classes[name] = {\n id: name,\n type,\n label: name,\n cssClasses: [],\n methods: [],\n members: [],\n annotations: [],\n domId: MERMAID_DOM_ID_PREFIX + name + \"-\" + classCounter\n };\n classCounter++;\n};\nconst lookUpDomId = function(_id) {\n const id = common.sanitizeText(_id, getConfig());\n if (id in classes) {\n return classes[id].domId;\n }\n throw new Error(\"Class not found: \" + id);\n};\nconst clear = function() {\n relations = [];\n classes = {};\n notes = [];\n functions = [];\n functions.push(setupToolTips);\n namespaces = {};\n namespaceCounter = 0;\n clear$1();\n};\nconst getClass = function(id) {\n return classes[id];\n};\nconst getClasses = function() {\n return classes;\n};\nconst getRelations = function() {\n return relations;\n};\nconst getNotes = function() {\n return notes;\n};\nconst addRelation = function(relation) {\n log.debug(\"Adding relation: \" + JSON.stringify(relation));\n addClass(relation.id1);\n addClass(relation.id2);\n relation.id1 = splitClassNameAndType(relation.id1).className;\n relation.id2 = splitClassNameAndType(relation.id2).className;\n relation.relationTitle1 = common.sanitizeText(\n relation.relationTitle1.trim(),\n getConfig()\n );\n relation.relationTitle2 = common.sanitizeText(\n relation.relationTitle2.trim(),\n getConfig()\n );\n relations.push(relation);\n};\nconst addAnnotation = function(className, annotation) {\n const validatedClassName = splitClassNameAndType(className).className;\n classes[validatedClassName].annotations.push(annotation);\n};\nconst addMember = function(className, member) {\n addClass(className);\n const validatedClassName = splitClassNameAndType(className).className;\n const theClass = classes[validatedClassName];\n if (typeof member === \"string\") {\n const memberString = member.trim();\n if (memberString.startsWith(\"<<\") && memberString.endsWith(\">>\")) {\n theClass.annotations.push(sanitizeText(memberString.substring(2, memberString.length - 2)));\n } else if (memberString.indexOf(\")\") > 0) {\n theClass.methods.push(new ClassMember(memberString, \"method\"));\n } else if (memberString) {\n theClass.members.push(new ClassMember(memberString, \"attribute\"));\n }\n }\n};\nconst addMembers = function(className, members) {\n if (Array.isArray(members)) {\n members.reverse();\n members.forEach((member) => addMember(className, member));\n }\n};\nconst addNote = function(text, className) {\n const note = {\n id: `note${notes.length}`,\n class: className,\n text\n };\n notes.push(note);\n};\nconst cleanupLabel = function(label) {\n if (label.startsWith(\":\")) {\n label = label.substring(1);\n }\n return sanitizeText(label.trim());\n};\nconst setCssClass = function(ids, className) {\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) {\n id = MERMAID_DOM_ID_PREFIX + id;\n }\n if (classes[id] !== void 0) {\n classes[id].cssClasses.push(className);\n }\n });\n};\nconst setTooltip = function(ids, tooltip) {\n ids.split(\",\").forEach(function(id) {\n if (tooltip !== void 0) {\n classes[id].tooltip = sanitizeText(tooltip);\n }\n });\n};\nconst getTooltip = function(id, namespace) {\n if (namespace) {\n return namespaces[namespace].classes[id].tooltip;\n }\n return classes[id].tooltip;\n};\nconst setLink = function(ids, linkStr, target) {\n const config = getConfig();\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) {\n id = MERMAID_DOM_ID_PREFIX + id;\n }\n if (classes[id] !== void 0) {\n classes[id].link = utils.formatUrl(linkStr, config);\n if (config.securityLevel === \"sandbox\") {\n classes[id].linkTarget = \"_top\";\n } else if (typeof target === \"string\") {\n classes[id].linkTarget = sanitizeText(target);\n } else {\n classes[id].linkTarget = \"_blank\";\n }\n }\n });\n setCssClass(ids, \"clickable\");\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFunc(id, functionName, functionArgs);\n classes[id].haveCallback = true;\n });\n setCssClass(ids, \"clickable\");\n};\nconst setClickFunc = function(_domId, functionName, functionArgs) {\n const domId = common.sanitizeText(_domId, getConfig());\n const config = getConfig();\n if (config.securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n const id = domId;\n if (classes[id] !== void 0) {\n const elemId = lookUpDomId(id);\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n if (argList.length === 0) {\n argList.push(elemId);\n }\n functions.push(function() {\n const elem = document.querySelector(`[id=\"${elemId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n \"click\",\n function() {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\nconst bindFunctions = function(element) {\n functions.forEach(function(fun) {\n fun(element);\n });\n};\nconst lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n};\nconst relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n LOLLIPOP: 4\n};\nconst setupToolTips = function(element) {\n let tooltipElem = select(\".mermaidTooltip\");\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select(\"body\").append(\"div\").attr(\"class\", \"mermaidTooltip\").style(\"opacity\", 0);\n }\n const svg = select(element).select(\"svg\");\n const nodes = svg.selectAll(\"g.node\");\n nodes.on(\"mouseover\", function() {\n const el = select(this);\n const title = el.attr(\"title\");\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n tooltipElem.transition().duration(200).style(\"opacity\", \".9\");\n tooltipElem.text(el.attr(\"title\")).style(\"left\", window.scrollX + rect.left + (rect.right - rect.left) / 2 + \"px\").style(\"top\", window.scrollY + rect.top - 14 + document.body.scrollTop + \"px\");\n tooltipElem.html(tooltipElem.html().replace(/<br\\/>/g, \"
\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = select(this);\n el.classed(\"hover\", false);\n });\n};\nfunctions.push(setupToolTips);\nlet direction = \"TB\";\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\nconst addNamespace = function(id) {\n if (namespaces[id] !== void 0) {\n return;\n }\n namespaces[id] = {\n id,\n classes: {},\n children: {},\n domId: MERMAID_DOM_ID_PREFIX + id + \"-\" + namespaceCounter\n };\n namespaceCounter++;\n};\nconst getNamespace = function(name) {\n return namespaces[name];\n};\nconst getNamespaces = function() {\n return namespaces;\n};\nconst addClassesToNamespace = function(id, classNames) {\n if (namespaces[id] !== void 0) {\n classNames.map((className) => {\n classes[className].parent = id;\n namespaces[id].classes[className] = classes[className];\n });\n }\n};\nconst db = {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n getConfig: () => getConfig().class,\n addClass,\n bindFunctions,\n clear,\n getClass,\n getClasses,\n getNotes,\n addAnnotation,\n addNote,\n getRelations,\n addRelation,\n getDirection,\n setDirection,\n addMember,\n addMembers,\n cleanupLabel,\n lineType,\n relationType,\n setClickEvent,\n setCssClass,\n setLink,\n getTooltip,\n setTooltip,\n lookUpDomId,\n setDiagramTitle,\n getDiagramTitle,\n setClassLabel,\n addNamespace,\n addClassesToNamespace,\n getNamespace,\n getNamespaces\n};\nconst getStyles = (options) => `g.classGroup text {\n fill: ${options.nodeBorder};\n fill: ${options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${options.classText};\n}\n.edgeLabel .label rect {\n fill: ${options.mainBkg};\n}\n.label text {\n fill: ${options.classText};\n}\n.edgeLabel .label span {\n background: ${options.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n`;\nconst styles = getStyles;\nexport {\n db as d,\n parser$1 as p,\n styles as s\n};\n"], + "mappings": "+JAEA,IAAIA,GAAS,UAAW,CACtB,IAAIC,EAAI,SAASC,EAAGC,EAAGC,EAAIC,EAAG,CAC5B,IAAKD,EAAKA,GAAM,CAAC,EAAGC,EAAIH,EAAE,OAAQG,IAAKD,EAAGF,EAAEG,CAAC,CAAC,EAAIF,EAChD,CACF,OAAOC,CACT,EAAGE,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,CAAC,EAAGC,EAAM,CAAC,EAAG,EAAG,CAAC,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAG,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,EAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,EAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAG,EAAG,EAAE,EACp3BC,GAAU,CACZ,MAAO,UAAiB,CACxB,EACA,GAAI,CAAC,EACL,SAAU,CAAE,MAAS,EAAG,MAAS,EAAG,WAAc,EAAG,WAAc,EAAG,YAAe,EAAG,cAAiB,EAAG,QAAW,EAAG,IAAO,EAAG,UAAa,GAAI,WAAc,GAAI,IAAO,GAAI,IAAO,GAAI,IAAO,GAAI,cAAiB,GAAI,cAAiB,GAAI,UAAa,GAAI,iBAAoB,GAAI,YAAe,GAAI,kBAAqB,GAAI,MAAS,GAAI,mBAAsB,GAAI,eAAkB,GAAI,gBAAmB,GAAI,oBAAuB,GAAI,eAAkB,GAAI,kBAAqB,GAAI,cAAiB,GAAI,UAAa,GAAI,UAAa,GAAI,gBAAmB,GAAI,UAAa,GAAI,gBAAmB,GAAI,0BAA6B,GAAI,oBAAuB,GAAI,aAAgB,GAAI,gBAAmB,GAAI,YAAe,GAAI,UAAa,GAAI,gBAAmB,GAAI,gBAAmB,GAAI,QAAW,GAAI,MAAS,GAAI,iBAAoB,GAAI,eAAkB,GAAI,OAAU,GAAI,UAAa,GAAI,SAAY,GAAI,SAAY,GAAI,SAAY,GAAI,KAAQ,GAAI,aAAgB,GAAI,aAAgB,GAAI,aAAgB,GAAI,aAAgB,GAAI,aAAgB,GAAI,SAAY,GAAI,YAAe,GAAI,UAAa,GAAI,YAAe,GAAI,WAAc,GAAI,SAAY,GAAI,KAAQ,GAAI,YAAe,GAAI,SAAY,GAAI,KAAQ,GAAI,YAAe,GAAI,MAAS,GAAI,cAAiB,GAAI,cAAiB,GAAI,KAAQ,GAAI,SAAY,GAAI,aAAgB,GAAI,UAAa,GAAI,gBAAmB,GAAI,gBAAmB,GAAI,SAAY,GAAI,OAAU,GAAI,KAAM,GAAI,KAAM,GAAI,IAAO,GAAI,QAAW,GAAI,MAAS,GAAI,MAAS,GAAI,SAAY,GAAI,aAAgB,GAAI,IAAO,GAAI,MAAS,GAAI,WAAc,GAAI,QAAW,EAAG,KAAQ,CAAE,EACtkD,WAAY,CAAE,EAAG,QAAS,EAAG,gBAAiB,EAAG,UAAW,EAAG,MAAO,GAAI,MAAO,GAAI,MAAO,GAAI,MAAO,GAAI,cAAe,GAAI,QAAS,GAAI,YAAa,GAAI,kBAAmB,GAAI,YAAa,GAAI,kBAAmB,GAAI,4BAA6B,GAAI,eAAgB,GAAI,cAAe,GAAI,YAAa,GAAI,kBAAmB,GAAI,QAAS,GAAI,mBAAoB,GAAI,iBAAkB,GAAI,SAAU,GAAI,YAAa,GAAI,WAAY,GAAI,OAAQ,GAAI,eAAgB,GAAI,eAAgB,GAAI,eAAgB,GAAI,eAAgB,GAAI,cAAe,GAAI,YAAa,GAAI,cAAe,GAAI,aAAc,GAAI,WAAY,GAAI,OAAQ,GAAI,cAAe,GAAI,WAAY,GAAI,OAAQ,GAAI,cAAe,GAAI,QAAS,GAAI,gBAAiB,GAAI,gBAAiB,GAAI,OAAQ,GAAI,WAAY,GAAI,kBAAmB,GAAI,WAAY,GAAI,SAAU,GAAI,KAAM,GAAI,KAAM,GAAI,MAAO,GAAI,UAAW,GAAI,QAAS,GAAI,QAAS,GAAI,WAAY,GAAI,eAAgB,GAAI,MAAO,GAAI,QAAS,GAAI,YAAa,EACj9B,aAAc,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG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,SAAS,EACP,kBACT,IAAK,GACH,YAAK,MAAM,WAAW,EACf,GACT,IAAK,GACH,YAAK,SAAS,EACP,kBACT,IAAK,IACH,KAAK,MAAM,qBAAqB,EAChC,MACF,IAAK,IACH,KAAK,SAAS,EACd,MACF,IAAK,IACH,MAAO,4BACT,IAAK,IACH,MAAO,GACT,IAAK,IACH,MACF,IAAK,IACH,MAAO,GACT,IAAK,IACH,MAAO,GACT,IAAK,IACH,MAAO,aACT,IAAK,IACH,KAAK,MAAM,eAAe,EAC1B,MACF,IAAK,IACH,KAAK,SAAS,EACd,MACF,IAAK,IACH,KAAK,SAAS,EACd,KAAK,MAAM,eAAe,EAC1B,MACF,IAAK,IACH,MAAO,IACT,IAAK,IACH,KAAK,SAAS,EACd,MACF,IAAK,IACH,MAAO,IACT,IAAK,IACH,KAAK,SAAS,EACd,MACF,IAAK,IACH,MAAO,MACT,IAAK,IACH,KAAK,MAAM,QAAQ,EACnB,MACF,IAAK,IACH,YAAK,MAAM,WAAW,EACf,GACT,IAAK,IACH,YAAK,SAAS,EACP,EACT,IAAK,IACH,MACF,IAAK,IACH,YAAK,MAAM,gBAAgB,EACpB,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,MAAO,gBACT,IAAK,IACH,MAAO,GACT,IAAK,IACH,MACF,IAAK,IACH,MAAO,aACT,IAAK,IACH,YAAK,MAAM,OAAO,EACX,GACT,IAAK,IACH,YAAK,SAAS,EACP,EACT,IAAK,IACH,MACF,IAAK,IACH,YAAK,SAAS,EACd,KAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,MAAM,YAAY,EAChB,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,MAAO,gBACT,IAAK,IACH,MAAO,aACT,IAAK,IACH,MAAO,iBACT,IAAK,IACH,MACF,IAAK,IACH,MAAO,SACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IAC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", + "names": ["parser", "o", "k", "v", "o2", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "parser2", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "TERROR", "EOF", "args", "lexer2", "sharedState", "yyloc", "ranges", "lex", "token", "symbol", "state", "action", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "n", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "Parser", "parser$1", "visibilityValues", "ClassMember", "memberType", "sanitizedInput", "sanitizeText$2", "getConfig$1", "displayText", "parseGenericTypes", "cssStyle", "potentialClassifier", "methodRegEx", "detectedVisibility", "lastChar", "length", "firstChar", "MERMAID_DOM_ID_PREFIX", "relations", "classes", "notes", "classCounter", "namespaces", "namespaceCounter", "functions", "sanitizeText", "txt", "common$1", "splitClassNameAndType", "_id", "id", "genericType", "className", "split", "setClassLabel", "label", "addClass", "type", "name", "lookUpDomId", "clear", "setupToolTips", "getClass", "getClasses", "getRelations", "getNotes", "addRelation", "relation", "log$1", "addAnnotation", "annotation", "validatedClassName", "addMember", "member", "theClass", "memberString", "addMembers", "members", "addNote", "text", "note", "cleanupLabel", "setCssClass", "ids", "setTooltip", "tooltip", "getTooltip", "namespace", "setLink", "linkStr", "target", "config", "utils", "setClickEvent", "functionName", "functionArgs", "setClickFunc", "_domId", "domId", "elemId", "argList", "item", "elem", "bindFunctions", "element", "fun", "lineType", "relationType", "tooltipElem", "select_default", "el", "rect", "direction", "getDirection", "setDirection", "dir", "addNamespace", "getNamespace", "getNamespaces", "addClassesToNamespace", "classNames", "db", "setAccTitle", "getAccTitle", "getAccDescription", "setAccDescription", "setDiagramTitle", "getDiagramTitle", "getStyles", "options", "styles"] +} diff --git a/public/chunk-VKCMXAYQ.min.js b/public/chunk-VKCMXAYQ.min.js new file mode 100644 index 0000000..6e2878b --- /dev/null +++ b/public/chunk-VKCMXAYQ.min.js @@ -0,0 +1,8 @@ +import{Fa as ft,a as ht,ob as xt}from"./chunk-DJFTDYIK.min.js";import{c as ue}from"./chunk-P42HNYSU.min.js";var ae={};function Un(n,r){let t=r||ae,e=typeof t.includeImageAlt=="boolean"?t.includeImageAlt:!0,u=typeof t.includeHtml=="boolean"?t.includeHtml:!0;return dt(n,e,u)}function dt(n,r,t){if(oe(n)){if("value"in n)return n.type==="html"&&!t?"":n.value;if(r&&"alt"in n&&n.alt)return n.alt;if("children"in n)return gt(n.children,r,t)}return Array.isArray(n)?gt(n,r,t):""}function gt(n,r,t){let e=[],u=-1;for(;++uu?0:u+r:r=r>u?u:r,t=t>0?t:0,e.length<1e4)i=Array.from(e),i.unshift(r,t),[].splice.apply(n,i);else for(t&&[].splice.apply(n,[r,t]);a0?(Z(n,n.length,0,r),n):r}var kt={}.hasOwnProperty;function yt(n){let r={},t=-1;for(;++ti))return;let j=r.events.length,H=j,M,Q;for(;H--;)if(r.events[H][0]==="exit"&&r.events[H][1].type==="chunkFlow"){if(M){Q=r.events[H][1].end;break}M=!0}for(b(e),d=j;dw;){let _=t[P];r.containerState=_[1],_[0].exit.call(r,n)}t.length=w}function R(){u.write([null]),a=void 0,u=void 0,r.containerState._closeFlow=void 0}}function me(n,r,t){return C(n,n.attempt(this.parser.constructs.document,r,t),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Zn(n){if(n===null||V(n)||wt(n))return 1;if(Ft(n))return 2}function yn(n,r,t){let e=[],u=-1;for(;++u1&&n[t][1].end.offset-n[t][1].start.offset>1?2:1;let y=Object.assign({},n[e][1].end),h=Object.assign({},n[t][1].start);It(y,-p),It(h,p),i={type:p>1?"strongSequence":"emphasisSequence",start:y,end:Object.assign({},n[e][1].end)},o={type:p>1?"strongSequence":"emphasisSequence",start:Object.assign({},n[t][1].start),end:h},a={type:p>1?"strongText":"emphasisText",start:Object.assign({},n[e][1].end),end:Object.assign({},n[t][1].start)},u={type:p>1?"strong":"emphasis",start:Object.assign({},i.start),end:Object.assign({},o.end)},n[e][1].end=Object.assign({},i.start),n[t][1].start=Object.assign({},o.end),m=[],n[e][1].end.offset-n[e][1].start.offset&&(m=J(m,[["enter",n[e][1],r],["exit",n[e][1],r]])),m=J(m,[["enter",u,r],["enter",i,r],["exit",i,r],["enter",a,r]]),m=J(m,yn(r.parser.constructs.insideSpan.null,n.slice(e+1,t),r)),m=J(m,[["exit",a,r],["enter",o,r],["exit",o,r],["exit",u,r]]),n[t][1].end.offset-n[t][1].start.offset?(c=2,m=J(m,[["enter",n[t][1],r],["exit",n[t][1],r]])):c=0,Z(n,e-1,t-e+3,m),t=e+m.length-c-2;break}}for(t=-1;++t=4?i(m):t(m)}function i(m){return m===null?p(m):S(m)?n.attempt(we,i,p)(m):(n.enter("codeFlowValue"),o(m))}function o(m){return m===null||S(m)?(n.exit("codeFlowValue"),i(m)):(n.consume(m),o)}function p(m){return n.exit("codeIndented"),r(m)}}function Ce(n,r,t){let e=this;return u;function u(i){return e.parser.lazy[e.now().line]?t(i):S(i)?(n.enter("lineEnding"),n.consume(i),n.exit("lineEnding"),u):C(n,a,"linePrefix",4+1)(i)}function a(i){let o=e.events[e.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?r(i):S(i)?u(i):t(i)}}var Gn={name:"codeText",tokenize:Ie,resolve:Ae,previous:ze};function Ae(n){let r=n.length-4,t=3,e,u;if((n[t][1].type==="lineEnding"||n[t][1].type==="space")&&(n[r][1].type==="lineEnding"||n[r][1].type==="space")){for(e=t;++e=4?r(i):n.interrupt(e.parser.constructs.flow,t,r)(i)}}function Rn(n,r,t,e,u,a,i,o,p){let m=p||Number.POSITIVE_INFINITY,c=0;return y;function y(b){return b===60?(n.enter(e),n.enter(u),n.enter(a),n.consume(b),n.exit(a),h):b===null||b===41||In(b)?t(b):(n.enter(e),n.enter(i),n.enter(o),n.enter("chunkString",{contentType:"string"}),T(b))}function h(b){return b===62?(n.enter(a),n.consume(b),n.exit(a),n.exit(u),n.exit(e),r):(n.enter(o),n.enter("chunkString",{contentType:"string"}),x(b))}function x(b){return b===62?(n.exit("chunkString"),n.exit(o),h(b)):b===null||b===60||S(b)?t(b):(n.consume(b),b===92?g:x)}function g(b){return b===60||b===62||b===92?(n.consume(b),x):x(b)}function T(b){return b===40?++c>m?t(b):(n.consume(b),T):b===41?c--?(n.consume(b),T):(n.exit("chunkString"),n.exit(o),n.exit(i),n.exit(e),r(b)):b===null||V(b)?c?t(b):(n.exit("chunkString"),n.exit(o),n.exit(i),n.exit(e),r(b)):In(b)?t(b):(n.consume(b),b===92?O:T)}function O(b){return b===40||b===41||b===92?(n.consume(b),T):T(b)}}function jn(n,r,t,e,u,a){let i=this,o=0,p;return m;function m(x){return n.enter(e),n.enter(u),n.consume(x),n.exit(u),n.enter(a),c}function c(x){return x===null||x===91||x===93&&!p||x===94&&!o&&"_hiddenFootnoteSupport"in i.parser.constructs||o>999?t(x):x===93?(n.exit(a),n.enter(u),n.consume(x),n.exit(u),n.exit(e),r):S(x)?(n.enter("lineEnding"),n.consume(x),n.exit("lineEnding"),c):(n.enter("chunkString",{contentType:"string"}),y(x))}function y(x){return x===null||x===91||x===93||S(x)||o++>999?(n.exit("chunkString"),c(x)):(n.consume(x),p=p||!I(x),x===92?h:y)}function h(x){return x===91||x===92||x===93?(n.consume(x),o++,y):y(x)}}function qn(n,r,t,e,u,a){let i;return o;function o(h){return n.enter(e),n.enter(u),n.consume(h),n.exit(u),i=h===40?41:h,p}function p(h){return h===i?(n.enter(u),n.consume(h),n.exit(u),n.exit(e),r):(n.enter(a),m(h))}function m(h){return h===i?(n.exit(a),p(i)):h===null?t(h):S(h)?(n.enter("lineEnding"),n.consume(h),n.exit("lineEnding"),C(n,m,"linePrefix")):(n.enter("chunkString",{contentType:"string"}),c(h))}function c(h){return h===i||h===null||S(h)?(n.exit("chunkString"),m(h)):(n.consume(h),h===92?y:c)}function y(h){return h===i||h===92?(n.consume(h),c):c(h)}}function fn(n,r){let t;return e;function e(u){return S(u)?(n.enter("lineEnding"),n.consume(u),n.exit("lineEnding"),t=!0,e):I(u)?C(n,e,t?"linePrefix":"lineSuffix")(u):r(u)}}function on(n){return n.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var Kn={name:"definition",tokenize:_e},Pe={tokenize:Me,partial:!0};function _e(n,r,t){let e=this,u;return a;function a(p){return n.enter("definition"),jn.call(e,n,i,t,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function i(p){return u=on(e.sliceSerialize(e.events[e.events.length-1][1]).slice(1,-1)),p===58?(n.enter("definitionMarker"),n.consume(p),n.exit("definitionMarker"),fn(n,Rn(n,n.attempt(Pe,C(n,o,"whitespace"),C(n,o,"whitespace")),t,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):t(p)}function o(p){return p===null||S(p)?(n.exit("definition"),e.parser.defined.includes(u)||e.parser.defined.push(u),r(p)):t(p)}}function Me(n,r,t){return e;function e(i){return V(i)?fn(n,u)(i):t(i)}function u(i){return i===34||i===39||i===40?qn(n,C(n,a,"whitespace"),t,"definitionTitle","definitionTitleMarker","definitionTitleString")(i):t(i)}function a(i){return i===null||S(i)?r(i):t(i)}}var Xn={name:"hardBreakEscape",tokenize:Re};function Re(n,r,t){return e;function e(a){return n.enter("hardBreakEscape"),n.enter("escapeMarker"),n.consume(a),u}function u(a){return S(a)?(n.exit("escapeMarker"),n.exit("hardBreakEscape"),r(a)):t(a)}}var vn={name:"headingAtx",tokenize:qe,resolve:je};function je(n,r){let t=n.length-2,e=3,u,a;return n[e][1].type==="whitespace"&&(e+=2),t-2>e&&n[t][1].type==="whitespace"&&(t-=2),n[t][1].type==="atxHeadingSequence"&&(e===t-1||t-4>e&&n[t-2][1].type==="whitespace")&&(t-=e+1===t?2:4),t>e&&(u={type:"atxHeadingText",start:n[e][1].start,end:n[t][1].end},a={type:"chunkText",start:n[e][1].start,end:n[t][1].end,contentType:"text"},Z(n,e,t-e+1,[["enter",u,r],["enter",a,r],["exit",a,r],["exit",u,r]])),n}function qe(n,r,t){let e=this,u=0;return a;function a(c){return n.enter("atxHeading"),n.enter("atxHeadingSequence"),i(c)}function i(c){return c===35&&u++<6?(n.consume(c),i):c===null||V(c)?(n.exit("atxHeadingSequence"),e.interrupt?r(c):o(c)):t(c)}function o(c){return c===35?(n.enter("atxHeadingSequence"),p(c)):c===null||S(c)?(n.exit("atxHeading"),r(c)):I(c)?C(n,o,"whitespace")(c):(n.enter("atxHeadingText"),m(c))}function p(c){return c===35?(n.consume(c),p):(n.exit("atxHeadingSequence"),o(c))}function m(c){return c===null||c===35||V(c)?(n.exit("atxHeadingText"),o(c)):(n.consume(c),m)}}var Tt=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],nt=["pre","script","style","textarea"];var tt={name:"htmlFlow",tokenize:Ve,resolveTo:Ne,concrete:!0},He={tokenize:We,partial:!0};function Ne(n){let r=n.length;for(;r--&&!(n[r][0]==="enter"&&n[r][1].type==="htmlFlow"););return r>1&&n[r-2][1].type==="linePrefix"&&(n[r][1].start=n[r-2][1].start,n[r+1][1].start=n[r-2][1].start,n.splice(r-2,2)),n}function Ve(n,r,t){let e=this,u,a,i,o,p;return m;function m(l){return n.enter("htmlFlow"),n.enter("htmlFlowData"),n.consume(l),c}function c(l){return l===33?(n.consume(l),y):l===47?(n.consume(l),g):l===63?(n.consume(l),u=3,e.interrupt?r:G):v(l)?(n.consume(l),i=String.fromCharCode(l),a=!0,T):t(l)}function y(l){return l===45?(n.consume(l),u=2,h):l===91?(n.consume(l),u=5,i="CDATA[",o=0,x):v(l)?(n.consume(l),u=4,e.interrupt?r:G):t(l)}function h(l){return l===45?(n.consume(l),e.interrupt?r:G):t(l)}function x(l){return l===i.charCodeAt(o++)?(n.consume(l),o===i.length?e.interrupt?r:A:x):t(l)}function g(l){return v(l)?(n.consume(l),i=String.fromCharCode(l),T):t(l)}function T(l){return l===null||l===47||l===62||V(l)?l!==47&&a&&nt.includes(i.toLowerCase())?(u=1,e.interrupt?r(l):A(l)):Tt.includes(i.toLowerCase())?(u=6,l===47?(n.consume(l),O):e.interrupt?r(l):A(l)):(u=7,e.interrupt&&!e.parser.lazy[e.now().line]?t(l):a?R(l):b(l)):l===45||K(l)?(n.consume(l),i+=String.fromCharCode(l),T):t(l)}function O(l){return l===62?(n.consume(l),e.interrupt?r:A):t(l)}function b(l){return I(l)?(n.consume(l),b):M(l)}function R(l){return l===47?(n.consume(l),M):l===58||l===95||v(l)?(n.consume(l),w):I(l)?(n.consume(l),R):M(l)}function w(l){return l===45||l===46||l===58||l===95||K(l)?(n.consume(l),w):P(l)}function P(l){return l===61?(n.consume(l),_):I(l)?(n.consume(l),P):R(l)}function _(l){return l===null||l===60||l===61||l===62||l===96?t(l):l===34||l===39?(n.consume(l),p=l,d):I(l)?(n.consume(l),_):(p=null,j(l))}function d(l){return l===null||S(l)?t(l):l===p?(n.consume(l),H):(n.consume(l),d)}function j(l){return l===null||l===34||l===39||l===60||l===61||l===62||l===96||V(l)?P(l):(n.consume(l),j)}function H(l){return l===47||l===62||I(l)?R(l):t(l)}function M(l){return l===62?(n.consume(l),Q):t(l)}function Q(l){return I(l)?(n.consume(l),Q):l===null||S(l)?A(l):t(l)}function A(l){return l===45&&u===2?(n.consume(l),U):l===60&&u===1?(n.consume(l),X):l===62&&u===4?(n.consume(l),N):l===63&&u===3?(n.consume(l),G):l===93&&u===5?(n.consume(l),W):S(l)&&(u===6||u===7)?n.check(He,N,D)(l):l===null||S(l)?D(l):(n.consume(l),A)}function D(l){return n.exit("htmlFlowData"),E(l)}function E(l){return l===null?s(l):S(l)?n.attempt({tokenize:z,partial:!0},E,s)(l):(n.enter("htmlFlowData"),A(l))}function z(l,En,mn){return dn;function dn(en){return l.enter("lineEnding"),l.consume(en),l.exit("lineEnding"),wn}function wn(en){return e.parser.lazy[e.now().line]?mn(en):En(en)}}function U(l){return l===45?(n.consume(l),G):A(l)}function X(l){return l===47?(n.consume(l),i="",nn):A(l)}function nn(l){return l===62&&nt.includes(i.toLowerCase())?(n.consume(l),N):v(l)&&i.length<8?(n.consume(l),i+=String.fromCharCode(l),nn):A(l)}function W(l){return l===93?(n.consume(l),G):A(l)}function G(l){return l===62?(n.consume(l),N):l===45&&u===2?(n.consume(l),G):A(l)}function N(l){return l===null||S(l)?(n.exit("htmlFlowData"),s(l)):(n.consume(l),N)}function s(l){return n.exit("htmlFlow"),r(l)}}function We(n,r,t){return e;function e(u){return n.exit("htmlFlowData"),n.enter("lineEndingBlank"),n.consume(u),n.exit("lineEndingBlank"),n.attempt(cn,r,t)}}var et={name:"htmlText",tokenize:Qe};function Qe(n,r,t){let e=this,u,a,i,o;return p;function p(s){return n.enter("htmlText"),n.enter("htmlTextData"),n.consume(s),m}function m(s){return s===33?(n.consume(s),c):s===47?(n.consume(s),j):s===63?(n.consume(s),_):v(s)?(n.consume(s),Q):t(s)}function c(s){return s===45?(n.consume(s),y):s===91?(n.consume(s),a="CDATA[",i=0,O):v(s)?(n.consume(s),P):t(s)}function y(s){return s===45?(n.consume(s),h):t(s)}function h(s){return s===null||s===62?t(s):s===45?(n.consume(s),x):g(s)}function x(s){return s===null||s===62?t(s):g(s)}function g(s){return s===null?t(s):s===45?(n.consume(s),T):S(s)?(o=g,W(s)):(n.consume(s),g)}function T(s){return s===45?(n.consume(s),N):g(s)}function O(s){return s===a.charCodeAt(i++)?(n.consume(s),i===a.length?b:O):t(s)}function b(s){return s===null?t(s):s===93?(n.consume(s),R):S(s)?(o=b,W(s)):(n.consume(s),b)}function R(s){return s===93?(n.consume(s),w):b(s)}function w(s){return s===62?N(s):s===93?(n.consume(s),w):b(s)}function P(s){return s===null||s===62?N(s):S(s)?(o=P,W(s)):(n.consume(s),P)}function _(s){return s===null?t(s):s===63?(n.consume(s),d):S(s)?(o=_,W(s)):(n.consume(s),_)}function d(s){return s===62?N(s):_(s)}function j(s){return v(s)?(n.consume(s),H):t(s)}function H(s){return s===45||K(s)?(n.consume(s),H):M(s)}function M(s){return S(s)?(o=M,W(s)):I(s)?(n.consume(s),M):N(s)}function Q(s){return s===45||K(s)?(n.consume(s),Q):s===47||s===62||V(s)?A(s):t(s)}function A(s){return s===47?(n.consume(s),N):s===58||s===95||v(s)?(n.consume(s),D):S(s)?(o=A,W(s)):I(s)?(n.consume(s),A):N(s)}function D(s){return s===45||s===46||s===58||s===95||K(s)?(n.consume(s),D):E(s)}function E(s){return s===61?(n.consume(s),z):S(s)?(o=E,W(s)):I(s)?(n.consume(s),E):A(s)}function z(s){return s===null||s===60||s===61||s===62||s===96?t(s):s===34||s===39?(n.consume(s),u=s,U):S(s)?(o=z,W(s)):I(s)?(n.consume(s),z):(n.consume(s),u=void 0,nn)}function U(s){return s===u?(n.consume(s),X):s===null?t(s):S(s)?(o=U,W(s)):(n.consume(s),U)}function X(s){return s===62||s===47||V(s)?A(s):t(s)}function nn(s){return s===null||s===34||s===39||s===60||s===61||s===96?t(s):s===62||V(s)?A(s):(n.consume(s),nn)}function W(s){return n.exit("htmlTextData"),n.enter("lineEnding"),n.consume(s),n.exit("lineEnding"),C(n,G,"linePrefix",e.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function G(s){return n.enter("htmlTextData"),o(s)}function N(s){return s===62?(n.consume(s),n.exit("htmlTextData"),n.exit("htmlText"),r):t(s)}}var xn={name:"labelEnd",tokenize:Je,resolveTo:Ge,resolveAll:Ye},Ue={tokenize:Ke},$e={tokenize:Xe},Ze={tokenize:ve};function Ye(n){let r=-1,t;for(;++r-1&&(i[0]=i[0].slice(e)),a>0&&i.push(n[u].slice(0,a))),i}function gr(n,r){let t=-1,e=[],u;for(;++tFr,contentInitial:()=>kr,disable:()=>Cr,document:()=>dr,flow:()=>br,flowInitial:()=>yr,insideSpan:()=>wr,string:()=>Sr,text:()=>Er});var dr={42:Y,43:Y,45:Y,48:Y,49:Y,50:Y,51:Y,52:Y,53:Y,54:Y,55:Y,56:Y,57:Y,62:On},kr={91:Kn},yr={[-2]:Tn,[-1]:Tn,32:Tn},br={35:vn,42:gn,45:[Hn,gn],60:tt,61:Hn,95:gn,96:_n,126:_n},Sr={38:Pn,92:Dn},Er={[-5]:Bn,[-4]:Bn,[-3]:Bn,33:rt,38:Pn,42:Ln,60:[Yn,et],91:it,92:[Xn,Dn],93:xn,95:Ln,96:Gn},wr={null:[Ln,Ot]},Fr={null:[42,95]},Cr={null:[]};function jt(n={}){let r=yt([ut].concat(n.extensions||[])),t={defined:[],lazy:{},constructs:r,content:e(Ct),document:e(zt),flow:e(Bt),string:e(Dt),text:e(Pt)};return t;function e(u){return a;function a(i){return Rt(t,u,i)}}}var qt=/[\0\t\n\r]/g;function Ht(){let n=1,r="",t=!0,e;return u;function u(a,i,o){let p=[],m,c,y,h,x;for(a=r+a.toString(i),y=0,r="",t&&(a.charCodeAt(0)===65279&&y++,t=void 0);y13&&t<32||t>126&&t<160||t>55295&&t<57344||t>64975&&t<65008||(t&65535)===65535||(t&65535)===65534||t>1114111?"\uFFFD":String.fromCharCode(t)}var Ar=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Vt(n){return n.replace(Ar,zr)}function zr(n,r,t){if(r)return r;if(t.charCodeAt(0)===35){let u=t.charCodeAt(1),a=u===120||u===88;return Nn(t.slice(a?2:1),a?16:10)}return bn(t)||n}function Sn(n){return!n||typeof n!="object"?"":"position"in n||"type"in n?Wt(n.position):"start"in n||"end"in n?Wt(n):"line"in n||"column"in n?at(n):""}function at(n){return Qt(n&&n.line)+":"+Qt(n&&n.column)}function Wt(n){return at(n&&n.start)+"-"+at(n&&n.end)}function Qt(n){return n&&typeof n=="number"?n:1}var $t={}.hasOwnProperty,Vn=function(n,r,t){return typeof r!="string"&&(t=r,r=void 0),Ir(t)(Nt(jt(t).document().write(Ht()(n,r,!0))))};function Ir(n){let r={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:o(pt),autolinkProtocol:A,autolinkEmail:A,atxHeading:o(lt),blockQuote:o(kn),characterEscape:A,characterReference:A,codeFenced:o(hn),codeFencedFenceInfo:p,codeFencedFenceMeta:p,codeIndented:o(hn,p),codeText:o(Wn,p),codeTextData:A,data:A,codeFlowValue:A,definition:o(Kt),definitionDestinationString:p,definitionLabelString:p,definitionTitleString:p,emphasis:o(Xt),hardBreakEscape:o(st),hardBreakTrailing:o(st),htmlFlow:o(ct,p),htmlFlowData:A,htmlText:o(ct,p),htmlTextData:A,image:o(vt),label:p,link:o(pt),listItem:o(ne),listItemValue:g,listOrdered:o(mt,x),listUnordered:o(mt),paragraph:o(te),reference:dn,referenceString:p,resourceDestinationString:p,resourceTitleString:p,setextHeading:o(lt),strong:o(ee),thematicBreak:o(ie)},exit:{atxHeading:c(),atxHeadingSequence:j,autolink:c(),autolinkEmail:rn,autolinkProtocol:Fn,blockQuote:c(),characterEscapeValue:D,characterReferenceMarkerHexadecimal:en,characterReferenceMarkerNumeric:en,characterReferenceValue:$,codeFenced:c(R),codeFencedFence:b,codeFencedFenceInfo:T,codeFencedFenceMeta:O,codeFlowValue:D,codeIndented:c(w),codeText:c(nn),codeTextData:D,data:D,definition:c(),definitionDestinationString:d,definitionLabelString:P,definitionTitleString:_,emphasis:c(),hardBreakEscape:c(z),hardBreakTrailing:c(z),htmlFlow:c(U),htmlFlowData:D,htmlText:c(X),htmlTextData:D,image:c(G),label:s,labelText:N,lineEnding:E,link:c(W),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:wn,resourceDestinationString:l,resourceTitleString:En,resource:mn,setextHeading:c(Q),setextHeadingLineSequence:M,setextHeadingText:H,strong:c(),thematicBreak:c()}};Zt(r,(n||{}).mdastExtensions||[]);let t={};return e;function e(f){let k={type:"root",children:[]},F={stack:[k],tokenStack:[],config:r,enter:m,exit:y,buffer:p,resume:h,setData:a,getData:i},L=[],B=-1;for(;++B0){let tn=F.tokenStack[F.tokenStack.length-1];(tn[1]||Ut).call(F,void 0,tn[0])}for(k.position={start:pn(f.length>0?f[0][1].start:{line:1,column:1,offset:0}),end:pn(f.length>0?f[f.length-2][1].end:{line:1,column:1,offset:0})},B=-1;++B{c!==0&&(u++,e.push([])),m.split(" ").forEach(y=>{y&&e[u].push({content:y,type:o})})}):(i.type==="strong"||i.type==="emphasis")&&i.children.forEach(p=>{a(p,i.type)})}return t.forEach(i=>{i.type==="paragraph"&&i.children.forEach(o=>{a(o)})}),e}function Or(n){let{children:r}=Vn(n);function t(e){return e.type==="text"?e.value.replace(/\n/g,"
"):e.type==="strong"?`${e.children.map(t).join("")}`:e.type==="emphasis"?`${e.children.map(t).join("")}`:e.type==="paragraph"?`

${e.children.map(t).join("")}

`:`Unsupported markdown: ${e.type}`}return r.map(t).join("")}function Dr(n){return Intl.Segmenter?[...new Intl.Segmenter().segment(n)].map(r=>r.segment):[...n]}function Pr(n,r){let t=Dr(r.content);return Yt(n,[],t,r.type)}function Yt(n,r,t,e){if(t.length===0)return[{content:r.join(""),type:e},{content:"",type:e}];let[u,...a]=t,i=[...r,u];return n([{content:i.join(""),type:e}])?Yt(n,i,a,e):(r.length===0&&u&&(r.push(u),t.shift()),[{content:r.join(""),type:e},{content:t.join(""),type:e}])}function _r(n,r){if(n.some(({content:t})=>t.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return ot(n,r)}function ot(n,r,t=[],e=[]){if(n.length===0)return e.length>0&&t.push(e),t.length>0?t:[];let u="";n[0].content===" "&&(u=" ",n.shift());let a=n.shift()??{content:" ",type:"normal"},i=[...e];if(u!==""&&i.push({content:u,type:"normal"}),i.push(a),r(i))return ot(n,r,t,i);if(e.length>0)t.push(e),n.unshift(a);else if(a.content){let[o,p]=Pr(r,a);t.push([o]),p.content&&n.unshift(p)}return ot(n,r,t)}function Mr(n,r){r&&n.attr("style",r)}function Rr(n,r,t,e,u=!1){let a=n.append("foreignObject"),i=a.append("xhtml:div"),o=r.label,p=r.isNode?"nodeLabel":"edgeLabel";i.html(` + "+o+""),Mr(i,r.labelStyle),i.style("display","table-cell"),i.style("white-space","nowrap"),i.style("max-width",t+"px"),i.attr("xmlns","http://www.w3.org/1999/xhtml"),u&&i.attr("class","labelBkg");let m=i.node().getBoundingClientRect();return m.width===t&&(i.style("display","table"),i.style("white-space","break-spaces"),i.style("width",t+"px"),m=i.node().getBoundingClientRect()),a.style("width",m.width),a.style("height",m.height),a.node()}function Gt(n,r,t){return n.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",r*t-.1+"em").attr("dy",t+"em")}function jr(n,r,t){let e=n.append("text"),u=Gt(e,1,r);Jt(u,t);let a=u.node().getComputedTextLength();return e.remove(),a}function qr(n,r,t,e=!1){let a=r.append("g"),i=a.insert("rect").attr("class","background"),o=a.append("text").attr("y","-10.1"),p=0;for(let m of t){let c=h=>jr(a,1.1,h)<=n,y=c(m)?[m]:_r(m,c);for(let h of y){let x=Gt(o,p,1.1);Jt(x,h),p++}}if(e){let m=o.node().getBBox(),c=2;return i.attr("x",-c).attr("y",-c).attr("width",m.width+2*c).attr("height",m.height+2*c),a.node()}else return o.node()}function Jt(n,r){n.text(""),r.forEach((t,e)=>{let u=n.append("tspan").attr("font-style",t.type==="emphasis"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",t.type==="strong"?"bold":"normal");e===0?u.text(t.content):u.text(" "+t.content)})}var to=(n,r="",{style:t="",isTitle:e=!1,classes:u="",useHtmlLabels:a=!0,isNode:i=!0,width:o=200,addSvgBackground:p=!1}={})=>{if(ft.info("createText",r,t,e,u,a,i,p),a){let m=Or(r),c={isNode:i,label:xt(m).replace(/fa[blrs]?:fa-[\w-]+/g,h=>``),labelStyle:t.replace("fill:","color:")};return Rr(n,c,o,u,p)}else{let m=Br(r);return qr(o,n,m,p)}};export{to as a}; +//# sourceMappingURL=chunk-VKCMXAYQ.min.js.map diff --git a/public/chunk-VKCMXAYQ.min.js.map b/public/chunk-VKCMXAYQ.min.js.map new file mode 100644 index 0000000..d95cf87 --- /dev/null +++ b/public/chunk-VKCMXAYQ.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/mdast-util-to-string/lib/index.js", "../../node_modules/micromark-util-chunked/index.js", "../../node_modules/micromark-util-combine-extensions/index.js", "../../node_modules/micromark-util-character/lib/unicode-punctuation-regex.js", "../../node_modules/micromark-util-character/index.js", "../../node_modules/micromark-factory-space/index.js", "../../node_modules/micromark/lib/initialize/content.js", "../../node_modules/micromark/lib/initialize/document.js", "../../node_modules/micromark-util-classify-character/index.js", "../../node_modules/micromark-util-resolve-all/index.js", "../../node_modules/micromark-core-commonmark/lib/attention.js", "../../node_modules/micromark-core-commonmark/lib/autolink.js", "../../node_modules/micromark-core-commonmark/lib/blank-line.js", "../../node_modules/micromark-core-commonmark/lib/block-quote.js", "../../node_modules/micromark-core-commonmark/lib/character-escape.js", "../../node_modules/decode-named-character-reference/index.dom.js", "../../node_modules/micromark-core-commonmark/lib/character-reference.js", "../../node_modules/micromark-core-commonmark/lib/code-fenced.js", "../../node_modules/micromark-core-commonmark/lib/code-indented.js", "../../node_modules/micromark-core-commonmark/lib/code-text.js", "../../node_modules/micromark-util-subtokenize/index.js", "../../node_modules/micromark-core-commonmark/lib/content.js", "../../node_modules/micromark-factory-destination/index.js", "../../node_modules/micromark-factory-label/index.js", "../../node_modules/micromark-factory-title/index.js", "../../node_modules/micromark-factory-whitespace/index.js", "../../node_modules/micromark-util-normalize-identifier/index.js", "../../node_modules/micromark-core-commonmark/lib/definition.js", "../../node_modules/micromark-core-commonmark/lib/hard-break-escape.js", "../../node_modules/micromark-core-commonmark/lib/heading-atx.js", "../../node_modules/micromark-util-html-tag-name/index.js", "../../node_modules/micromark-core-commonmark/lib/html-flow.js", "../../node_modules/micromark-core-commonmark/lib/html-text.js", "../../node_modules/micromark-core-commonmark/lib/label-end.js", "../../node_modules/micromark-core-commonmark/lib/label-start-image.js", "../../node_modules/micromark-core-commonmark/lib/label-start-link.js", "../../node_modules/micromark-core-commonmark/lib/line-ending.js", "../../node_modules/micromark-core-commonmark/lib/thematic-break.js", "../../node_modules/micromark-core-commonmark/lib/list.js", "../../node_modules/micromark-core-commonmark/lib/setext-underline.js", "../../node_modules/micromark/lib/initialize/flow.js", "../../node_modules/micromark/lib/initialize/text.js", "../../node_modules/micromark/lib/create-tokenizer.js", "../../node_modules/micromark/lib/constructs.js", "../../node_modules/micromark/lib/parse.js", "../../node_modules/micromark/lib/preprocess.js", "../../node_modules/micromark/lib/postprocess.js", "../../node_modules/micromark-util-decode-numeric-character-reference/index.js", "../../node_modules/micromark-util-decode-string/index.js", "../../node_modules/unist-util-stringify-position/lib/index.js", "../../node_modules/mdast-util-from-markdown/lib/index.js", "../../node_modules/mermaid/dist/createText-b3507a77.js"], + "sourcesContent": ["/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s.\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML.\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node\u2019s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} value\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Node}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n", "/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {number} start\n * @param {number} remove\n * @param {T[]} items\n * @returns {void}\n */\nexport function splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {unknown[]} */\n\n let parameters // Make start between zero and `end` (included).\n\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n\n remove = remove > 0 ? remove : 0 // No need to chunk the items if there\u2019s only a couple (10k) items.\n\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove) // @ts-expect-error Hush, it\u2019s fine.\n ;[].splice.apply(list, parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) [].splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0) // @ts-expect-error Hush, it\u2019s fine.\n ;[].splice.apply(list, parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {T[]} items\n * @returns {T[]}\n */\n\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n", "/**\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine several syntax extensions into one.\n *\n * @param {Extension[]} extensions List of syntax extensions.\n * @returns {NormalizedExtension} A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all Extension to merge into.\n * @param {Extension} extension Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {string} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {string} */\n let code\n\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {unknown[]} existing\n * @param {unknown[]} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {unknown[]} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine several HTML extensions into one.\n *\n * @param {HtmlExtension[]} htmlExtensions List of HTML extensions.\n * @returns {HtmlExtension} A single combined extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all Extension to merge into.\n * @param {HtmlExtension} extension Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {string} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {string} */\n let type\n\n if (right) {\n for (type in right) {\n left[type] = right[type]\n }\n }\n }\n}\n", "// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nexport const unicodePunctuationRegex =\n /[!-/:-@[-`{-~\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n", "/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n */\n\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n */\n\nexport const asciiDigit = regexCheck(/\\d/)\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n */\n\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n */\n\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n */\n\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n */\n\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n )\n}\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32)\n}\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEnding(code) {\n return code !== null && code < -2\n}\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n\nexport const unicodeWhitespace = regexCheck(/\\s/)\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => code is number}\n */\n\nfunction regexCheck(regex) {\n return check\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code Character code\n * @returns {code is number} Whether the character code matches the bound regex\n */\n\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownSpace} from 'micromark-util-character'\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {string} type\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n\n return ok(code)\n }\n /** @type {State} */\n\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n\n effects.exit(type)\n return ok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n/** @type {Initializer} */\n\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n\n let previous\n return contentStart\n /** @type {State} */\n\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n /** @type {State} */\n\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n /** @type {State} */\n\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n } // Data.\n\n effects.consume(code)\n return data\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Point} Point\n */\n\n/**\n * @typedef {Record} StackState\n * @typedef {[Construct, StackState]} StackItem\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\n\nexport const document = {\n tokenize: initializeDocument\n}\n/** @type {Construct} */\n\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n/** @type {Initializer} */\n\nfunction initializeDocument(effects) {\n const self = this\n /** @type {Array} */\n\n const stack = []\n let continued = 0\n /** @type {TokenizeContext|undefined} */\n\n let childFlow\n /** @type {Token|undefined} */\n\n let childToken\n /** @type {number} */\n\n let lineStartOffset\n return start\n /** @type {State} */\n\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n } // Done.\n\n return checkNewContainers(code)\n }\n /** @type {State} */\n\n function documentContinue(code) {\n continued++ // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it\u2019s already used in the wild by\n // extensions.\n\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n\n if (childFlow) {\n closeFlow()\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point|undefined} */\n\n let point // Find the flow chunk.\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n let index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they\u2019re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n return checkNewContainers(code)\n }\n\n return start(code)\n }\n /** @type {State} */\n\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there\u2019s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n } // If we have concrete content, such as block HTML or fenced code,\n // we can\u2019t have containers \u201Cpierce\u201D into them, so we can immediately\n // start.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n } // If we do have flow, it could still be a blank line,\n // but we\u2019d be interrupting it w/ a new container if there\u2019s a current\n // construct.\n\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n } // Check if there is a new container.\n\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n /** @type {State} */\n\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n /** @type {State} */\n\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n /** @type {State} */\n\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n /** @type {State} */\n\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState]) // Try another.\n\n return documentContinued(code)\n }\n /** @type {State} */\n\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n /** @type {State} */\n\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit('chunkFlow'), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow')) // Get ready for the next line.\n\n continued = 0\n self.interrupt = undefined\n return start\n }\n\n effects.consume(code)\n return flowContinue\n }\n /**\n * @param {Token} token\n * @param {boolean} [eof]\n * @returns {void}\n */\n\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream) // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can\u2019t \u201Cunmake\u201D it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which \u201Cunmakes\u201D the first line\n // and turns the whole into one content block.\n //\n // We\u2019ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n\n while (index--) {\n if (\n // The token starts before the line ending\u2026\n childFlow.events[index][1].start.offset < lineStartOffset && // \u2026and either is not ended yet\u2026\n (!childFlow.events[index][1].end || // \u2026or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there\u2019s still something open, which means it\u2019s a lazy line\n // part of something.\n return\n }\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean|undefined} */\n\n let seen\n /** @type {Point|undefined} */\n\n let point // Find the previous chunk (the one before the lazy line).\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n\n seen = true\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they\u2019re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n }\n }\n /**\n * @param {number} size\n * @returns {void}\n */\n\n function exitContainers(size) {\n let index = stack.length // Exit open containers.\n\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContainer(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n", "/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n\n/**\n * Classify whether a character code represents whitespace, punctuation, or\n * something else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * Note that eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * @returns {number|undefined}\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {{resolveAll?: Resolver}[]} constructs\n * @param {Event[]} events\n * @param {TokenizeContext} context\n * @returns {Event[]}\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Resolver[]} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Point} Point\n */\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n\n let open\n /** @type {Token} */\n\n let group\n /** @type {Token} */\n\n let text\n /** @type {Token} */\n\n let openingSequence\n /** @type {Token} */\n\n let closingSequence\n /** @type {number} */\n\n let use\n /** @type {Event[]} */\n\n let nextEvents\n /** @type {number} */\n\n let offset // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it\u2019s\n // a bottleneck for malicious stuff.\n\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index // Now walk back to find an opener.\n\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open && // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don\u2019t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n } // Number of markers to use from the sequence.\n\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = [] // If there are more markers in the opening, add them before.\n\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n } // Opening.\n\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ]) // Between.\n\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ]) // If there are more markers in the closing, add them after.\n\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n } // Remove remaining sequences.\n\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n const token = effects.exit('attentionSequence')\n const after = classifyCharacter(code)\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It\u2019s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 1\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return asciiAtext(code) ? emailAtext(code) : nok(code)\n }\n /** @type {State} */\n\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\n /** @type {State} */\n\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n return urlInside\n }\n\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n return emailAtext(code)\n }\n /** @type {State} */\n\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n /** @type {State} */\n\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n /** @type {State} */\n\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n return end(code)\n }\n\n return emailValue(code)\n }\n /** @type {State} */\n\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code)\n return code === 45 ? emailValue : emailLabel\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function end(code) {\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n /** @type {State} */\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n/** @type {Exiter} */\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {asciiPunctuation} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n\n return nok(code)\n }\n}\n", "/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `\u00ACit;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n\n let max\n /** @type {(code: Code) => code is number} */\n\n let test\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n /** @type {State} */\n\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n /** @type {State} */\n\n function value(code) {\n /** @type {Token} */\n let token\n\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue')\n\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n\n const closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n /** @type {Construct} */\n\n const nonLazyLine = {\n tokenize: tokenizeNonLazyLine,\n partial: true\n }\n const tail = this.events[this.events.length - 1]\n const initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n marker = code\n return sequenceOpen(code)\n }\n /** @type {State} */\n\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit('codeFencedFenceSequence')\n return sizeOpen < 3\n ? nok(code)\n : factorySpace(effects, infoOpen, 'whitespace')(code)\n }\n /** @type {State} */\n\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n /** @type {State} */\n\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, infoAfter, 'whitespace')(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return info\n }\n /** @type {State} */\n\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n /** @type {State} */\n\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return openAfter(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return meta\n }\n /** @type {State} */\n\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : contentStart(code)\n }\n /** @type {State} */\n\n function contentStart(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n nonLazyLine,\n effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(\n effects,\n contentStart,\n 'linePrefix',\n initialPrefix + 1\n )\n : contentStart\n ),\n after\n )(code)\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return contentStart(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n /** @type {Tokenizer} */\n\n function tokenizeNonLazyLine(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {Tokenizer} */\n\n function tokenizeClosingFence(effects, ok, nok) {\n let size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n /** @type {State} */\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return closingSequence\n }\n\n if (size < sizeOpen) return nok(code)\n effects.exit('codeFencedFenceSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n/** @type {Construct} */\n\nconst indentedContent = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeIndented')\n return factorySpace(effects, afterStartPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterStartPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? afterPrefix(code)\n : nok(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContent, afterPrefix, after)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\n /** @type {State} */\n\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return afterPrefix(code)\n }\n\n effects.consume(code)\n return content\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeIndented')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n // If this is a lazy line, it can\u2019t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? ok(code)\n : markdownLineEnding(code)\n ? start(code)\n : nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n/** @type {Resolver} */\n\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n\n let index\n /** @type {number|undefined} */\n\n let enter // If we start and end with an EOL or a space.\n\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex // And we have data.\n\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return events\n}\n/** @type {Previous} */\n\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n\n let size\n /** @type {Token} */\n\n let token\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\n /** @type {State} */\n\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return openingSequence\n }\n\n effects.exit('codeTextSequence')\n return gap(code)\n }\n /** @type {State} */\n\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return closingSequence(code)\n } // Tabs don\u2019t work, and virtual spaces don\u2019t make sense.\n\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return gap\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return gap\n } // Data.\n\n effects.enter('codeTextData')\n return data(code)\n } // In code.\n\n /** @type {State} */\n\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return gap(code)\n }\n\n effects.consume(code)\n return data\n } // Closing fence.\n\n /** @type {State} */\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return closingSequence\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData'\n return data(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {splice} from 'micromark-util-chunked'\n\n/**\n * Tokenize subcontent.\n *\n * @param {Event[]} events\n * @returns {boolean}\n */\nexport function subtokenize(events) {\n /** @type {Record} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n\n let event\n /** @type {number|undefined} */\n\n let lineIndex\n /** @type {number} */\n\n let otherIndex\n /** @type {Event} */\n\n let otherEvent\n /** @type {Event[]} */\n\n let parameters\n /** @type {Event[]} */\n\n let subevents\n /** @type {boolean|undefined} */\n\n let more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n } // Enter.\n\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n } // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n splice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n/**\n * Tokenize embedded tokens.\n *\n * @param {Event[]} events\n * @param {number} eventIndex\n * @returns {Record}\n */\n\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {number[]} */\n\n const startPositions = []\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {[number, number][]} */\n\n const jumps = []\n /** @type {Record} */\n\n const gaps = {}\n /** @type {Chunk[]} */\n\n let stream\n /** @type {Token|undefined} */\n\n let previous\n let index = -1\n /** @type {Token|undefined} */\n\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start] // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n\n if (!current.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = current\n current = current.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n current = token\n\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n start = index + 1\n breaks.push(start) // Help GC.\n\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n } // Help GC.\n\n tokenizer.events = [] // If there\u2019s one more token (which is the cases for lines that end in an\n // EOF), that\u2019s perfect: the last point we found starts it.\n // If there isn\u2019t then make sure any remaining content is added to it.\n\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n } else {\n breaks.pop()\n } // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren\u2019t affected.\n\n index = breaks.length\n\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n splice(events, start, 2, slice)\n }\n\n index = -1\n\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n\n return gaps\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n tokenize: tokenizeContent,\n resolve: resolveContent\n}\n/** @type {Construct} */\n\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}\n/**\n * Content is transparent: it\u2019s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\n\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContent(effects, ok) {\n /** @type {Token} */\n let previous\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous\n })\n previous = previous.next\n return data\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n return startLookahead\n /** @type {State} */\n\n function startLookahead(code) {\n effects.exit('chunkContent')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n /** @type {State} */\n\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n const tail = self.events[self.events.length - 1]\n\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return ok(code)\n }\n\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiControl,\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} literalType\n * @param {string} literalMarkerType\n * @param {string} rawType\n * @param {string} stringType\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return destinationEnclosedBefore\n }\n\n if (code === null || code === 41 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationRaw(code)\n }\n /** @type {State} */\n\n function destinationEnclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationEnclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return destinationEnclosedBefore(code)\n }\n\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n }\n /** @type {State} */\n\n function destinationEnclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return destinationEnclosed\n }\n\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationRaw(code) {\n if (code === 40) {\n if (++balance > limit) return nok(code)\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === 41) {\n if (!balance--) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n if (balance) return nok(code)\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (asciiControl(code)) return nok(code)\n effects.consume(code)\n return code === 92 ? destinationRawEscape : destinationRaw\n }\n /** @type {State} */\n\n function destinationRawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return destinationRaw\n }\n\n return destinationRaw(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @this {TokenizeContext}\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n\n let data\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* To do: remove in the future once we\u2019ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn\u2019t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n (code === 94 &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs) ||\n size > 999\n ) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return label(code)\n }\n /** @type {State} */\n\n function label(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n effects.consume(code)\n data = data || !markdownSpace(code)\n return code === 92 ? labelEscape : label\n }\n /** @type {State} */\n\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return label\n }\n\n return label(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable} */\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return atFirstTitleBreak\n }\n /** @type {State} */\n\n function atFirstTitleBreak(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atTitleBreak(code)\n }\n /** @type {State} */\n\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return atFirstTitleBreak(marker)\n }\n\n if (code === null) {\n return nok(code)\n } // Note: blank lines can\u2019t exist in content.\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atTitleBreak, 'linePrefix')\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return title(code)\n }\n /** @type {State} */\n\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atTitleBreak(code)\n }\n\n effects.consume(code)\n return code === 92 ? titleEscape : title\n }\n /** @type {State} */\n\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return title\n }\n\n return title(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\n /** @type {State} */\n\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n\n return ok(code)\n }\n}\n", "/**\n * Normalize an identifier (such as used in definitions).\n *\n * @param {string} value\n * @returns {string}\n */\nexport function normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered \u201Cuppercase\u201D, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n/** @type {Construct} */\n\nconst titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n\n let identifier\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('definition')\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n /** @type {State} */\n\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Note: blank lines can\u2019t exist in content.\n\n return factoryWhitespace(\n effects,\n factoryDestination(\n effects,\n effects.attempt(\n titleConstruct,\n factorySpace(effects, after, 'whitespace'),\n factorySpace(effects, after, 'whitespace')\n ),\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )\n )\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (!self.parser.defined.includes(identifier)) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\n /** @type {State} */\n\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factorySpace(effects, after, 'whitespace'),\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker')\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n/** @type {Resolver} */\n\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n\n let content\n /** @type {Token} */\n\n let text // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n } // Suffix whitespace, part of the closing.\n\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n // @ts-expect-error Constants are fine to assign.\n contentType: 'text'\n }\n splice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n const self = this\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\n /** @type {State} */\n\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return fenceOpenInside\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return self.interrupt ? ok(code) : headingBreak(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequence(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n return ok(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code)\n }\n\n effects.enter('atxHeadingText')\n return data(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === 35) {\n effects.consume(code)\n return sequence\n }\n\n effects.exit('atxHeadingSequence')\n return headingBreak(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return headingBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n", "/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result\n * in more relaxed rules (condition 6): because they are known blocks, the\n * HTML-like syntax doesn\u2019t have to be strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * .\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result in\n * HTML that can include lines w/o exiting, until a closing tag also in this\n * list is found (condition 1).\n *\n * This module is copied from:\n * .\n *\n * Note that `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n/** @type {Construct} */\n\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n/** @type {Construct} */\n\nconst nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n/** @type {Resolver} */\n\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n events.splice(index - 2, 2)\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n\n let kind\n /** @type {boolean} */\n\n let startTag\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {Code} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationStart\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n kind = 3 // While we\u2019re in an instruction instead of a declaration, we\u2019re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = String.fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationStart(code) {\n if (code === 45) {\n effects.consume(code)\n kind = 2\n return commentOpenInside\n }\n\n if (code === 91) {\n effects.consume(code)\n kind = 5\n buffer = 'CDATA['\n index = 0\n return cdataOpenInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n kind = 4\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdataOpenInside(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length\n ? self.interrupt\n ? ok\n : continuation\n : cdataOpenInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n if (\n code !== 47 &&\n startTag &&\n htmlRawNames.includes(buffer.toLowerCase())\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n kind = 6\n\n if (code === 47) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n kind = 7 // Do not support complete HTML when interrupting\n\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : startTag\n ? completeAttributeNameBefore(code)\n : completeClosingTagAfter(code)\n }\n\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n return self.interrupt ? ok : continuation\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n\n return completeAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n\n return completeAttributeNameBefore(code)\n }\n /** @type {State} */\n\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return completeAttributeValueQuoted\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n marker = null\n return completeAttributeValueUnquoted(code)\n }\n /** @type {State} */\n\n function completeAttributeValueQuoted(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n /** @type {State} */\n\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n /** @type {State} */\n\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n\n return code === null || markdownLineEnding(code)\n ? continuation(code)\n : nok(code)\n }\n /** @type {State} */\n\n function continuation(code) {\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n\n if (code === 60 && kind === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n\n if (code === 62 && kind === 4) {\n effects.consume(code)\n return continuationClose\n }\n\n if (code === 63 && kind === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n if (code === 93 && kind === 5) {\n effects.consume(code)\n return continuationCharacterDataInside\n }\n\n if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n return effects.check(\n nextBlankConstruct,\n continuationClose,\n continuationAtLineEnding\n )(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n return continuationAtLineEnding(code)\n }\n\n effects.consume(code)\n return continuation\n }\n /** @type {State} */\n\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n /** @type {State} */\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n {\n tokenize: htmlLineEnd,\n partial: true\n },\n htmlContinueStart,\n done\n )(code)\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n /** @type {Tokenizer} */\n\n function htmlLineEnd(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {State} */\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.includes(buffer.toLowerCase())) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n } // More dashes.\n\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return done(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n /** @type {State} */\n\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.exit('htmlFlowData')\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable|undefined} */\n\n let marker\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {State} */\n\n let returnState\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpen\n }\n\n if (code === 91) {\n effects.consume(code)\n buffer = 'CDATA['\n index = 0\n return cdataOpen\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentStartDash\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = comment\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return comment\n }\n /** @type {State} */\n\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length ? cdata : cdataOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = cdata\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return cdata\n }\n /** @type {State} */\n\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = declaration\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return declaration\n }\n /** @type {State} */\n\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = instruction\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return instruction\n }\n /** @type {State} */\n\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n /** @type {State} */\n\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueUnquoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === null) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n } // We can\u2019t have blank lines in content, so no need to worry about empty\n // tokens.\n\n /** @type {State} */\n\n function atLineEnding(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(\n effects,\n afterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n/** @type {Construct} */\n\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\n\nconst fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\n/** @type {Construct} */\n\nconst collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n/** @type {Resolver} */\n\nfunction resolveAllLabelEnd(events) {\n let index = -1\n /** @type {Token} */\n\n let token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n\n return events\n}\n/** @type {Resolver} */\n\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n\n let token\n /** @type {number|undefined} */\n\n let open\n /** @type {number|undefined} */\n\n let close\n /** @type {Event[]} */\n\n let media // Find an opening.\n\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we\u2019ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n } // Mark other link openings as inactive, as we can\u2019t have links in\n // links.\n\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = push(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = push(media, [['enter', text, context]]) // Between.\n\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n ) // Text close, marker close, label close.\n\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ]) // Reference, resource, or so.\n\n media = push(media, events.slice(close + 1)) // Media close.\n\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n\n let labelStart\n /** @type {boolean} */\n\n let defined // Find an opening.\n\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It\u2019s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return afterLabelEnd\n }\n /** @type {State} */\n\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n ok,\n defined ? ok : balanced\n )(code)\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(\n fullReferenceConstruct,\n ok,\n defined\n ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n : balanced\n )(code)\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code)\n }\n /** @type {State} */\n\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return factoryWhitespace(effects, open)\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 41) {\n return end(code)\n }\n\n return factoryDestination(\n effects,\n destinationAfter,\n nok,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n /** @type {State} */\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\n /** @type {State} */\n\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factoryWhitespace(effects, end),\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeFullReference(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n return factoryLabel.call(\n self,\n effects,\n afterLabel,\n nok,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n /** @type {State} */\n\n function afterLabel(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we\u2019ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn\u2019t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we\u2019ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn\u2019t need this */\n\n /* Hidden footnotes hook. */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n return nok(code)\n }\n\n effects.exit('thematicBreak')\n return ok(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit('thematicBreakSequence')\n return atBreak(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @typedef {Record & {marker: Code, type: string, size: number}} ListContainerState\n * @typedef {TokenizeContext & {containerState: ListContainerState}} TokenizeContextWithState\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {asciiDigit, markdownSpace} from 'micromark-util-character'\nimport {blankLine} from './blank-line.js'\nimport {thematicBreak} from './thematic-break.js'\n/** @type {Construct} */\n\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\n/** @type {Construct} */\n\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n/** @type {Construct} */\n\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n const kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n\n return nok(code)\n }\n /**\n * @type {State}\n **/\n\n function atMarker(code) {\n effects.enter('listItemMarker')\n effects.consume(code)\n effects.exit('listItemMarker')\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n blankLine, // Can\u2019t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n /** @type {State} */\n\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n return ok(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n self.containerState._closeFlow = undefined\n return effects.check(blankLine, onBlank, notBlank)\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine // We have a blank line.\n // Still, try to consume at most the items size.\n\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n /** @type {State} */\n\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n /** @type {State} */\n\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true // As we\u2019re closing flow, we\u2019re no longer interrupting.\n\n self.interrupt = undefined\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'listItemIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n/**\n * @type {Exiter}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4 + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return !markdownSpace(code) &&\n tail &&\n tail[1].type === 'listItemPrefixWhitespace'\n ? ok(code)\n : nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n/** @type {Resolver} */\n\nfunction resolveToSetextUnderline(events, context) {\n let index = events.length\n /** @type {number|undefined} */\n\n let content\n /** @type {number|undefined} */\n\n let text\n /** @type {number|undefined} */\n\n let definition // Find the opening of the content.\n // It\u2019ll always exist: we don\u2019t tokenize if it isn\u2019t there.\n\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n } // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we\u2019ll add it later)\n events.splice(index, 1)\n }\n\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n\n const heading = {\n type: 'setextHeading',\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n } // Change the paragraph to setext heading text.\n\n events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we\u2019ll keep on having content,\n // but we need move it.\n\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n } // Add the heading exit at the end.\n\n events.push(['exit', heading, context])\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {NonNullable} */\n\n let marker\n /** @type {boolean} */\n\n let paragraph // Find an opening.\n\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n effects.enter('setextHeadingLineSequence')\n marker = code\n return closingSequence(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n return closingSequence\n }\n\n effects.exit('setextHeadingLineSequence')\n return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n/** @type {Initializer} */\n\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding, // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n /** @type {State} */\n\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n /** @type {State} */\n\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n/**\n * @param {'string'|'text'} field\n * @returns {InitialConstruct}\n */\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n /** @type {Initializer} */\n\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n return start\n /** @type {State} */\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n /** @type {State} */\n\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('data')\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n\n function atBreak(code) {\n if (code === null) {\n return true\n }\n\n const list = constructs[code]\n let index = -1\n\n if (list) {\n while (++index < list.length) {\n const item = list[index]\n\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n\n return false\n }\n }\n}\n/**\n * @param {Resolver} [extraResolver]\n * @returns {Resolver}\n */\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n /** @type {Resolver} */\n\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number|undefined} */\n\n let enter // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don\u2019t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\n }\n}\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can\u2019t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\n\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean|undefined} */\n\n let tabs\n\n while (index--) {\n const chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n } // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n", "/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n */\n\n/**\n * @typedef Info\n * @property {() => void} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn\u2019t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record} */\n\n const columnStart = {}\n /** @type {Array} */\n\n const resolveAllConstructs = []\n /** @type {Array} */\n\n let chunks = []\n /** @type {Array} */\n\n let stack = []\n /** @type {boolean|undefined} */\n\n let consumed = true\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n /**\n * The state function.\n *\n * @type {State|void}\n */\n\n let state = initialize.tokenize.call(context, effects)\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n\n let expectedCode\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n\n return context\n /** @type {TokenizeContext['write']} */\n\n function write(slice) {\n chunks = push(chunks, slice)\n main() // Exit if we\u2019re not done, resolve might change stuff.\n\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n\n addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n } //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n /** @type {TokenizeContext['sliceStream']} */\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n /** @type {TokenizeContext['now']} */\n\n function now() {\n return Object.assign({}, point)\n }\n /** @type {TokenizeContext['defineSkip']} */\n\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n } //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n\n function main() {\n /** @type {number} */\n let chunkIndex\n\n while (point._index < chunks.length) {\n const chunk = chunks[point._index] // If we\u2019re in a buffer chunk, loop through it.\n\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n /** @type {Effects['consume']} */\n\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++ // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n } // Expose the previous character.\n\n context.previous = code // Mark as consumed.\n\n consumed = true\n }\n /** @type {Effects['enter']} */\n\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n }\n /** @type {Effects['exit']} */\n\n function exit(type) {\n const token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n }\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {Record} [fields]\n */\n\n function constructFactory(onreturn, fields) {\n return hook\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Construct|Array|ConstructRecord} constructs\n * @param {State} returnState\n * @param {State} [bogusState]\n * @returns {State}\n */\n\n function hook(constructs, returnState, bogusState) {\n /** @type {Array} */\n let listOfConstructs\n /** @type {number} */\n\n let constructIndex\n /** @type {Construct} */\n\n let currentConstruct\n /** @type {Info} */\n\n let info\n return Array.isArray(constructs)\n ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs)\n : 'tokenize' in constructs // @ts-expect-error Looks like a construct.\n ? handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n\n function handleMapOfConstructs(map) {\n return start\n /** @type {State} */\n\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n /**\n * Handle a list of construct.\n *\n * @param {Array} list\n * @returns {State}\n */\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n\n if (list.length === 0) {\n return bogusState\n }\n\n return handleConstruct(list[constructIndex])\n }\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n\n function handleConstruct(construct) {\n return start\n /** @type {State} */\n\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn\u2019t work because `inspect` in document does a check\n // w/o a bogus, which doesn\u2019t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\n\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a \u201Clive binding\u201D, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n /** @type {State} */\n\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n /** @type {State} */\n\n function nok(code) {\n consumed = true\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n /**\n * Store state.\n *\n * @returns {Info}\n */\n\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n return {\n restore,\n from: startEventsIndex\n }\n /**\n * Restore state.\n *\n * @returns {void}\n */\n\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n /**\n * Move the current point a bit forward in the line when it\u2019s on a column\n * skip.\n *\n * @returns {void}\n */\n\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array} chunks\n * @param {Pick} token\n * @returns {Array}\n */\n\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Array} */\n\n let view\n\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view[0] = view[0].slice(startBufferIndex)\n }\n\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array} chunks\n * @param {boolean} [expandTabs=false]\n * @returns {string}\n */\n\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {Array} */\n\n const result = []\n /** @type {boolean|undefined} */\n\n let atTab\n\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n\n let value\n\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n\n case -4: {\n value = '\\n'\n break\n }\n\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n", "/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n/** @type {Extension['document']} */\n\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n/** @type {Extension['contentInitial']} */\n\nexport const contentInitial = {\n [91]: definition\n}\n/** @type {Extension['flowInitial']} */\n\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n/** @type {Extension['flow']} */\n\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n/** @type {Extension['string']} */\n\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n/** @type {Extension['text']} */\n\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n/** @type {Extension['insideSpan']} */\n\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n/** @type {Extension['attentionMarkers']} */\n\nexport const attentionMarkers = {\n null: [42, 95]\n}\n/** @type {Extension['disable']} */\n\nexport const disable = {\n null: []\n}\n", "/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Create} Create\n */\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n/**\n * @param {ParseOptions} [options]\n * @returns {ParseContext}\n */\n\nexport function parse(options = {}) {\n /** @type {FullNormalizedExtension} */\n // @ts-expect-error `defaultConstructs` is full, so the result will be too.\n const constructs = combineExtensions(\n // @ts-expect-error Same as above.\n [defaultConstructs].concat(options.extensions || [])\n )\n /** @type {ParseContext} */\n\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n /**\n * @param {InitialConstruct} initial\n */\n\n function create(initial) {\n return creator\n /** @type {Create} */\n\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {boolean} [end=false]\n * @returns {Array}\n */\nconst search = /[\\0\\t\\n\\r]/g\n/**\n * @returns {Preprocessor}\n */\n\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean|undefined} */\n\n let start = true\n /** @type {boolean|undefined} */\n\n let atCarriageReturn\n return preprocessor\n /** @type {Preprocessor} */\n\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray|null} */\n\n let match\n /** @type {number} */\n\n let next\n /** @type {number} */\n\n let startPosition\n /** @type {number} */\n\n let endPosition\n /** @type {Code} */\n\n let code // @ts-expect-error `Buffer` does allow an encoding.\n\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n\n break\n }\n\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n\n return chunks\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * @param {Array} events\n * @returns {Array}\n */\n\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n", "/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) || // Noncharacters.\n (code > 64975 && code < 65008) ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 || // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n\n return String.fromCharCode(code)\n}\n", "import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n/**\n * Utility to decode markdown strings (which occur in places such as fenced\n * code info strings, destinations, labels, and titles).\n * The \u201Cstring\u201D content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * @returns {string}\n */\n\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\n\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n } // Reference.\n\n const head = $2.charCodeAt(0)\n\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n\n return decodeNamedCharacterReference($2) || $0\n}\n", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n", "/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract} Parent\n *\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | undefined | null | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn\u2019t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(key: Key) => CompileData[Key]} getData\n * Get data from the key/value store.\n * @property {(key: Key, value?: CompileData[Key]) => void} setData\n * Set data into the key/value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don\u2019t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * @param value\n * Markdown to parse.\n * @param encoding\n * Character encoding for when `value` is `Buffer`.\n * @param options\n * Configuration.\n * @returns\n * mdast tree.\n */\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n * ((value: Value, options?: Options | null | undefined) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding | Options | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n // @ts-expect-error: micromark types need to accept `null`.\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n // @ts-expect-error Patched.\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n // @ts-expect-error Patched\n _spread: false,\n start: Object.assign({}, event[1].start)\n }\n // @ts-expect-error: `listItem` is most definitely defined, TS...\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n\n // @ts-expect-error Patched.\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Set data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @param {CompileData[Key]} [value]\n * New value.\n * @returns {void}\n * Nothing.\n */\n function setData(key, value) {\n data[key] = value\n }\n\n /**\n * Get data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @returns {CompileData[Key]}\n * Value.\n */\n function getData(key) {\n return data[key]\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Node} create\n * Create a node.\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {void}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @template {Node} Kind\n * Node type.\n * @this {CompileContext}\n * Context.\n * @param {Kind} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {Kind}\n * The given node.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n // @ts-expect-error: `end` will be patched later.\n node.position = {\n start: point(token.start)\n }\n return node\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {Node}\n * The closed node.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it\u2019s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n return node\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n let tail = node.children[node.children.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n // @ts-expect-error: we\u2019ll add `end` later.\n tail.position = {\n start: point(token.start)\n }\n // @ts-expect-error: Assume `parent` accepts `text`.\n node.children.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we\u2019re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n setData('inReference', true)\n if (node.type === 'link') {\n /** @type {Array} */\n // @ts-expect-error: Assume static phrasing content.\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n setData('inReference')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {HTML} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n // @ts-expect-error Patched.\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n // @ts-expect-error Patched.\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n if (key === 'canContainEols') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'transforms') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'enter' || key === 'exit') {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n", "import { l as log, J as decodeEntities } from \"./mermaid-485fd1a4.js\";\nimport { fromMarkdown } from \"mdast-util-from-markdown\";\nimport { dedent } from \"ts-dedent\";\nfunction preprocessMarkdown(markdown) {\n const withoutMultipleNewlines = markdown.replace(/\\n{2,}/g, \"\\n\");\n const withoutExtraSpaces = dedent(withoutMultipleNewlines);\n return withoutExtraSpaces;\n}\nfunction markdownToLines(markdown) {\n const preprocessedMarkdown = preprocessMarkdown(markdown);\n const { children } = fromMarkdown(preprocessedMarkdown);\n const lines = [[]];\n let currentLine = 0;\n function processNode(node, parentType = \"normal\") {\n if (node.type === \"text\") {\n const textLines = node.value.split(\"\\n\");\n textLines.forEach((textLine, index) => {\n if (index !== 0) {\n currentLine++;\n lines.push([]);\n }\n textLine.split(\" \").forEach((word) => {\n if (word) {\n lines[currentLine].push({ content: word, type: parentType });\n }\n });\n });\n } else if (node.type === \"strong\" || node.type === \"emphasis\") {\n node.children.forEach((contentNode) => {\n processNode(contentNode, node.type);\n });\n }\n }\n children.forEach((treeNode) => {\n if (treeNode.type === \"paragraph\") {\n treeNode.children.forEach((contentNode) => {\n processNode(contentNode);\n });\n }\n });\n return lines;\n}\nfunction markdownToHTML(markdown) {\n const { children } = fromMarkdown(markdown);\n function output(node) {\n if (node.type === \"text\") {\n return node.value.replace(/\\n/g, \"
\");\n } else if (node.type === \"strong\") {\n return `${node.children.map(output).join(\"\")}`;\n } else if (node.type === \"emphasis\") {\n return `${node.children.map(output).join(\"\")}`;\n } else if (node.type === \"paragraph\") {\n return `

${node.children.map(output).join(\"\")}

`;\n }\n return `Unsupported markdown: ${node.type}`;\n }\n return children.map(output).join(\"\");\n}\nfunction splitTextToChars(text) {\n if (Intl.Segmenter) {\n return [...new Intl.Segmenter().segment(text)].map((s) => s.segment);\n }\n return [...text];\n}\nfunction splitWordToFitWidth(checkFit, word) {\n const characters = splitTextToChars(word.content);\n return splitWordToFitWidthRecursion(checkFit, [], characters, word.type);\n}\nfunction splitWordToFitWidthRecursion(checkFit, usedChars, remainingChars, type) {\n if (remainingChars.length === 0) {\n return [\n { content: usedChars.join(\"\"), type },\n { content: \"\", type }\n ];\n }\n const [nextChar, ...rest] = remainingChars;\n const newWord = [...usedChars, nextChar];\n if (checkFit([{ content: newWord.join(\"\"), type }])) {\n return splitWordToFitWidthRecursion(checkFit, newWord, rest, type);\n }\n if (usedChars.length === 0 && nextChar) {\n usedChars.push(nextChar);\n remainingChars.shift();\n }\n return [\n { content: usedChars.join(\"\"), type },\n { content: remainingChars.join(\"\"), type }\n ];\n}\nfunction splitLineToFitWidth(line, checkFit) {\n if (line.some(({ content }) => content.includes(\"\\n\"))) {\n throw new Error(\"splitLineToFitWidth does not support newlines in the line\");\n }\n return splitLineToFitWidthRecursion(line, checkFit);\n}\nfunction splitLineToFitWidthRecursion(words, checkFit, lines = [], newLine = []) {\n if (words.length === 0) {\n if (newLine.length > 0) {\n lines.push(newLine);\n }\n return lines.length > 0 ? lines : [];\n }\n let joiner = \"\";\n if (words[0].content === \" \") {\n joiner = \" \";\n words.shift();\n }\n const nextWord = words.shift() ?? { content: \" \", type: \"normal\" };\n const lineWithNextWord = [...newLine];\n if (joiner !== \"\") {\n lineWithNextWord.push({ content: joiner, type: \"normal\" });\n }\n lineWithNextWord.push(nextWord);\n if (checkFit(lineWithNextWord)) {\n return splitLineToFitWidthRecursion(words, checkFit, lines, lineWithNextWord);\n }\n if (newLine.length > 0) {\n lines.push(newLine);\n words.unshift(nextWord);\n } else if (nextWord.content) {\n const [line, rest] = splitWordToFitWidth(checkFit, nextWord);\n lines.push([line]);\n if (rest.content) {\n words.unshift(rest);\n }\n }\n return splitLineToFitWidthRecursion(words, checkFit, lines);\n}\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlSpan(element, node, width, classes, addBackground = false) {\n const fo = element.append(\"foreignObject\");\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n `\n \" + label + \"\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"table-cell\");\n div.style(\"white-space\", \"nowrap\");\n div.style(\"max-width\", width + \"px\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n if (addBackground) {\n div.attr(\"class\", \"labelBkg\");\n }\n let bbox = div.node().getBoundingClientRect();\n if (bbox.width === width) {\n div.style(\"display\", \"table\");\n div.style(\"white-space\", \"break-spaces\");\n div.style(\"width\", width + \"px\");\n bbox = div.node().getBoundingClientRect();\n }\n fo.style(\"width\", bbox.width);\n fo.style(\"height\", bbox.height);\n return fo.node();\n}\nfunction createTspan(textElement, lineIndex, lineHeight) {\n return textElement.append(\"tspan\").attr(\"class\", \"text-outer-tspan\").attr(\"x\", 0).attr(\"y\", lineIndex * lineHeight - 0.1 + \"em\").attr(\"dy\", lineHeight + \"em\");\n}\nfunction computeWidthOfText(parentNode, lineHeight, line) {\n const testElement = parentNode.append(\"text\");\n const testSpan = createTspan(testElement, 1, lineHeight);\n updateTextContentAndStyles(testSpan, line);\n const textLength = testSpan.node().getComputedTextLength();\n testElement.remove();\n return textLength;\n}\nfunction createFormattedText(width, g, structuredText, addBackground = false) {\n const lineHeight = 1.1;\n const labelGroup = g.append(\"g\");\n const bkg = labelGroup.insert(\"rect\").attr(\"class\", \"background\");\n const textElement = labelGroup.append(\"text\").attr(\"y\", \"-10.1\");\n let lineIndex = 0;\n for (const line of structuredText) {\n const checkWidth = (line2) => computeWidthOfText(labelGroup, lineHeight, line2) <= width;\n const linesUnderWidth = checkWidth(line) ? [line] : splitLineToFitWidth(line, checkWidth);\n for (const preparedLine of linesUnderWidth) {\n const tspan = createTspan(textElement, lineIndex, lineHeight);\n updateTextContentAndStyles(tspan, preparedLine);\n lineIndex++;\n }\n }\n if (addBackground) {\n const bbox = textElement.node().getBBox();\n const padding = 2;\n bkg.attr(\"x\", -padding).attr(\"y\", -padding).attr(\"width\", bbox.width + 2 * padding).attr(\"height\", bbox.height + 2 * padding);\n return labelGroup.node();\n } else {\n return textElement.node();\n }\n}\nfunction updateTextContentAndStyles(tspan, wrappedLine) {\n tspan.text(\"\");\n wrappedLine.forEach((word, index) => {\n const innerTspan = tspan.append(\"tspan\").attr(\"font-style\", word.type === \"emphasis\" ? \"italic\" : \"normal\").attr(\"class\", \"text-inner-tspan\").attr(\"font-weight\", word.type === \"strong\" ? \"bold\" : \"normal\");\n if (index === 0) {\n innerTspan.text(word.content);\n } else {\n innerTspan.text(\" \" + word.content);\n }\n });\n}\nconst createText = (el, text = \"\", {\n style = \"\",\n isTitle = false,\n classes = \"\",\n useHtmlLabels = true,\n isNode = true,\n width = 200,\n addSvgBackground = false\n} = {}) => {\n log.info(\"createText\", text, style, isTitle, classes, useHtmlLabels, isNode, addSvgBackground);\n if (useHtmlLabels) {\n const htmlText = markdownToHTML(text);\n const node = {\n isNode,\n label: decodeEntities(htmlText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n const vertexNode = addHtmlSpan(el, node, width, classes, addSvgBackground);\n return vertexNode;\n } else {\n const structuredText = markdownToLines(text);\n const svgLabel = createFormattedText(width, el, structuredText, addSvgBackground);\n return svgLabel;\n }\n};\nexport {\n createText as c\n};\n"], + "mappings": "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", + "names": ["emptyOptions", "toString", "value", "options", "settings", "includeImageAlt", "includeHtml", "one", "node", "all", "values", "result", "index", "splice", "list", "start", "remove", "items", "end", "chunkStart", "parameters", "push", "hasOwnProperty", "combineExtensions", "extensions", "all", "index", "syntaxExtension", "extension", "hook", "left", "right", "code", "value", "constructs", "existing", "list", "before", "splice", "unicodePunctuationRegex", "asciiAlpha", "regexCheck", "asciiDigit", "asciiHexDigit", "asciiAlphanumeric", "asciiPunctuation", "asciiAtext", "asciiControl", "code", "markdownLineEndingOrSpace", "markdownLineEnding", "markdownSpace", "unicodeWhitespace", "unicodePunctuation", "unicodePunctuationRegex", "regex", "check", "factorySpace", "effects", "ok", "type", "max", "limit", "size", "start", "code", "markdownSpace", "prefix", "content", "initializeContent", "effects", "contentStart", "afterContentStartConstruct", "paragraphInitial", "previous", "code", "factorySpace", "lineStart", "token", "data", "markdownLineEnding", "document", "initializeDocument", "containerConstruct", "tokenizeContainer", "effects", "self", "stack", "continued", "childFlow", "childToken", "lineStartOffset", "start", "code", "item", "documentContinue", "checkNewContainers", "closeFlow", "indexBeforeExits", "indexBeforeFlow", "point", "exitContainers", "index", "splice", "documentContinued", "flowStart", "thereIsANewContainer", "thereIsNoNewContainer", "containerContinue", "flowContinue", "writeToChild", "markdownLineEnding", "token", "eof", "stream", "seen", "size", "entry", "ok", "nok", "factorySpace", "classifyCharacter", "code", "markdownLineEndingOrSpace", "unicodeWhitespace", "unicodePunctuation", "resolveAll", "constructs", "events", "context", "called", "index", "resolve", "attention", "tokenizeAttention", "resolveAllAttention", "events", "context", "index", "open", "group", "text", "openingSequence", "closingSequence", "use", "nextEvents", "offset", "start", "end", "movePoint", "push", "resolveAll", "splice", "effects", "ok", "attentionMarkers", "previous", "before", "classifyCharacter", "marker", "code", "sequence", "token", "after", "close", "point", "autolink", "tokenizeAutolink", "effects", "ok", "nok", "size", "start", "code", "open", "asciiAlpha", "schemeOrEmailAtext", "asciiAtext", "emailAtext", "asciiAlphanumeric", "schemeInsideOrEmailAtext", "urlInside", "end", "asciiControl", "emailAtSignOrDot", "emailLabel", "emailValue", "blankLine", "tokenizeBlankLine", "effects", "ok", "nok", "factorySpace", "afterWhitespace", "code", "markdownLineEnding", "blockQuote", "tokenizeBlockQuoteStart", "tokenizeBlockQuoteContinuation", "exit", "effects", "ok", "nok", "self", "start", "code", "state", "after", "markdownSpace", "factorySpace", "characterEscape", "tokenizeCharacterEscape", "effects", "ok", "nok", "start", "code", "open", "asciiPunctuation", "element", "decodeNamedCharacterReference", "value", "characterReference", "char", "characterReference", "tokenizeCharacterReference", "effects", "ok", "nok", "self", "size", "max", "test", "start", "code", "open", "numeric", "asciiAlphanumeric", "value", "asciiHexDigit", "asciiDigit", "token", "decodeNamedCharacterReference", "codeFenced", "tokenizeCodeFenced", "effects", "ok", "nok", "self", "closingFenceConstruct", "tokenizeClosingFence", "nonLazyLine", "tokenizeNonLazyLine", "tail", "initialPrefix", "sizeOpen", "marker", "start", "code", "sequenceOpen", "factorySpace", "infoOpen", "markdownLineEnding", "openAfter", "info", "markdownLineEndingOrSpace", "infoAfter", "meta", "contentStart", "after", "contentContinue", "lineStart", "size", "closingSequenceStart", "closingSequence", "closingSequenceEnd", "codeIndented", "tokenizeCodeIndented", "indentedContent", "tokenizeIndentedContent", "effects", "ok", "nok", "self", "start", "code", "factorySpace", "afterStartPrefix", "tail", "afterPrefix", "after", "markdownLineEnding", "content", "codeText", "tokenizeCodeText", "resolveCodeText", "previous", "events", "tailExitIndex", "headEnterIndex", "index", "enter", "code", "effects", "ok", "nok", "self", "sizeOpen", "size", "token", "start", "openingSequence", "gap", "closingSequence", "markdownLineEnding", "data", "subtokenize", "events", "jumps", "index", "event", "lineIndex", "otherIndex", "otherEvent", "parameters", "subevents", "more", "subcontent", "splice", "eventIndex", "token", "context", "startPosition", "startPositions", "tokenizer", "childEvents", "gaps", "stream", "previous", "current", "adjust", "start", "breaks", "slice", "content", "tokenizeContent", "resolveContent", "continuationConstruct", "tokenizeContinuation", "events", "subtokenize", "effects", "ok", "previous", "start", "code", "data", "contentEnd", "markdownLineEnding", "contentContinue", "nok", "self", "startLookahead", "factorySpace", "prefixed", "tail", "factoryDestination", "effects", "ok", "nok", "type", "literalType", "literalMarkerType", "rawType", "stringType", "max", "limit", "balance", "start", "code", "destinationEnclosedBefore", "asciiControl", "destinationRaw", "destinationEnclosed", "markdownLineEnding", "destinationEnclosedEscape", "markdownLineEndingOrSpace", "destinationRawEscape", "factoryLabel", "effects", "ok", "nok", "type", "markerType", "stringType", "self", "size", "data", "start", "code", "atBreak", "markdownLineEnding", "label", "markdownSpace", "labelEscape", "factoryTitle", "effects", "ok", "nok", "type", "markerType", "stringType", "marker", "start", "code", "atFirstTitleBreak", "atTitleBreak", "markdownLineEnding", "factorySpace", "title", "titleEscape", "factoryWhitespace", "effects", "ok", "seen", "start", "code", "markdownLineEnding", "markdownSpace", "factorySpace", "normalizeIdentifier", "value", "definition", "tokenizeDefinition", "titleConstruct", "tokenizeTitle", "effects", "ok", "nok", "self", "identifier", "start", "code", "factoryLabel", "labelAfter", "normalizeIdentifier", "factoryWhitespace", "factoryDestination", "factorySpace", "after", "markdownLineEnding", "markdownLineEndingOrSpace", "before", "factoryTitle", "hardBreakEscape", "tokenizeHardBreakEscape", "effects", "ok", "nok", "start", "code", "open", "markdownLineEnding", "headingAtx", "tokenizeHeadingAtx", "resolveHeadingAtx", "events", "context", "contentEnd", "contentStart", "content", "text", "splice", "effects", "ok", "nok", "self", "size", "start", "code", "fenceOpenInside", "markdownLineEndingOrSpace", "headingBreak", "sequence", "markdownLineEnding", "markdownSpace", "factorySpace", "data", "htmlBlockNames", "htmlRawNames", "htmlFlow", "tokenizeHtmlFlow", "resolveToHtmlFlow", "nextBlankConstruct", "tokenizeNextBlank", "events", "index", "effects", "ok", "nok", "self", "kind", "startTag", "buffer", "marker", "start", "code", "open", "declarationStart", "tagCloseStart", "continuationDeclarationInside", "asciiAlpha", "tagName", "commentOpenInside", "cdataOpenInside", "continuation", "markdownLineEndingOrSpace", "htmlRawNames", "htmlBlockNames", "basicSelfClosing", "completeAttributeNameBefore", "completeClosingTagAfter", "asciiAlphanumeric", "markdownSpace", "completeEnd", "completeAttributeName", "completeAttributeNameAfter", "completeAttributeValueBefore", "completeAttributeValueQuoted", "completeAttributeValueUnquoted", "markdownLineEnding", "completeAttributeValueQuotedAfter", "completeAfter", "continuationCommentInside", "continuationRawTagOpen", "continuationClose", "continuationCharacterDataInside", "continuationAtLineEnding", "htmlContinueStart", "done", "htmlLineEnd", "lineStart", "continuationRawEndTag", "blankLine", "htmlText", "tokenizeHtmlText", "effects", "ok", "nok", "self", "marker", "buffer", "index", "returnState", "start", "code", "open", "declarationOpen", "tagCloseStart", "instruction", "asciiAlpha", "tagOpen", "commentOpen", "cdataOpen", "declaration", "commentStart", "commentStartDash", "comment", "commentClose", "markdownLineEnding", "atLineEnding", "end", "cdata", "cdataClose", "cdataEnd", "instructionClose", "tagClose", "asciiAlphanumeric", "tagCloseBetween", "markdownSpace", "markdownLineEndingOrSpace", "tagOpenBetween", "tagOpenAttributeName", "tagOpenAttributeNameAfter", "tagOpenAttributeValueBefore", "tagOpenAttributeValueQuoted", "tagOpenAttributeValueUnquoted", "tagOpenAttributeValueQuotedAfter", "factorySpace", "afterPrefix", "labelEnd", "tokenizeLabelEnd", "resolveToLabelEnd", "resolveAllLabelEnd", "resourceConstruct", "tokenizeResource", "fullReferenceConstruct", "tokenizeFullReference", "collapsedReferenceConstruct", "tokenizeCollapsedReference", "events", "index", "token", "context", "offset", "open", "close", "media", "group", "label", "text", "push", "resolveAll", "splice", "effects", "ok", "nok", "self", "labelStart", "defined", "start", "code", "balanced", "normalizeIdentifier", "afterLabelEnd", "factoryWhitespace", "end", "factoryDestination", "destinationAfter", "markdownLineEndingOrSpace", "between", "factoryTitle", "factoryLabel", "afterLabel", "labelStartImage", "tokenizeLabelStartImage", "labelEnd", "effects", "ok", "nok", "self", "start", "code", "open", "after", "labelStartLink", "tokenizeLabelStartLink", "labelEnd", "effects", "ok", "nok", "self", "start", "code", "after", "lineEnding", "tokenizeLineEnding", "effects", "ok", "start", "code", "factorySpace", "thematicBreak", "tokenizeThematicBreak", "effects", "ok", "nok", "size", "marker", "start", "code", "atBreak", "sequence", "markdownSpace", "factorySpace", "markdownLineEnding", "list", "tokenizeListStart", "tokenizeListContinuation", "tokenizeListEnd", "listItemPrefixWhitespaceConstruct", "tokenizeListItemPrefixWhitespace", "indentConstruct", "tokenizeIndent", "effects", "ok", "nok", "self", "tail", "initialSize", "size", "start", "code", "kind", "asciiDigit", "thematicBreak", "atMarker", "inside", "blankLine", "onBlank", "endOfPrefix", "otherPrefix", "markdownSpace", "notBlank", "factorySpace", "notInCurrentItem", "afterPrefix", "setextUnderline", "tokenizeSetextUnderline", "resolveToSetextUnderline", "events", "context", "index", "content", "text", "definition", "heading", "effects", "ok", "nok", "self", "marker", "paragraph", "start", "code", "closingSequence", "factorySpace", "closingSequenceEnd", "markdownLineEnding", "flow", "initializeFlow", "effects", "self", "initial", "blankLine", "atBlankEnding", "afterConstruct", "factorySpace", "content", "code", "resolver", "createResolver", "string", "initializeFactory", "text", "field", "initializeText", "resolveAllLineSuffixes", "effects", "self", "constructs", "start", "notText", "code", "atBreak", "data", "list", "index", "item", "extraResolver", "resolveAllText", "events", "context", "enter", "eventIndex", "chunks", "bufferIndex", "size", "tabs", "chunk", "token", "createTokenizer", "parser", "initialize", "from", "point", "columnStart", "resolveAllConstructs", "chunks", "stack", "consumed", "effects", "consume", "enter", "exit", "constructFactory", "onsuccessfulconstruct", "onsuccessfulcheck", "context", "sliceStream", "sliceSerialize", "now", "defineSkip", "write", "state", "expectedCode", "slice", "push", "main", "addResult", "resolveAll", "token", "expandTabs", "serializeChunks", "sliceChunks", "value", "accountForPotentialSkip", "chunkIndex", "chunk", "go", "code", "markdownLineEnding", "type", "fields", "construct", "info", "_", "onreturn", "hook", "constructs", "returnState", "bogusState", "listOfConstructs", "constructIndex", "currentConstruct", "handleListOfConstructs", "handleMapOfConstructs", "map", "start", "def", "all", "list", "handleConstruct", "store", "nok", "ok", "splice", "startPoint", "startPrevious", "startCurrentConstruct", "startEventsIndex", "startStack", "restore", "startIndex", "startBufferIndex", "endIndex", "endBufferIndex", "view", "index", "result", "atTab", "constructs_exports", "__export", "attentionMarkers", "contentInitial", "disable", "document", "flow", "flowInitial", "insideSpan", "string", "text", "document", "list", "blockQuote", "contentInitial", "definition", "flowInitial", "codeIndented", "flow", "headingAtx", "thematicBreak", "setextUnderline", "htmlFlow", "codeFenced", "string", "characterReference", "characterEscape", "text", "lineEnding", "labelStartImage", "attention", "autolink", "htmlText", "labelStartLink", "hardBreakEscape", "labelEnd", "codeText", "insideSpan", "resolver", "attentionMarkers", "disable", "parse", "options", "constructs", "combineExtensions", "constructs_exports", "parser", "create", "content", "document", "flow", "string", "text", "initial", "creator", "from", "createTokenizer", "search", "preprocess", "column", "buffer", "start", "atCarriageReturn", "preprocessor", "value", "encoding", "end", "chunks", "match", "next", "startPosition", "endPosition", "code", "postprocess", "events", "subtokenize", "decodeNumericCharacterReference", "value", "base", "code", "characterEscapeOrReference", "decodeString", "value", "decode", "$0", "$1", "$2", "head", "hex", "decodeNumericCharacterReference", "decodeNamedCharacterReference", "stringifyPosition", "value", "position", "point", "index", "pos", "own", "fromMarkdown", "value", "encoding", "options", "compiler", "postprocess", "parse", "preprocess", "config", "opener", "link", "onenterdata", "heading", "blockQuote", "codeFlow", "buffer", "codeText", "definition", "emphasis", "hardBreak", "html", "image", "listItem", "onenterlistitemvalue", "list", "onenterlistordered", "paragraph", "onenterreference", "strong", "thematicBreak", "closer", "onexitatxheadingsequence", "onexitautolinkemail", "onexitautolinkprotocol", "onexitdata", "onexitcharacterreferencemarker", "onexitcharacterreferencevalue", "onexitcodefenced", "onexitcodefencedfence", "onexitcodefencedfenceinfo", "onexitcodefencedfencemeta", "onexitcodeindented", "onexitcodetext", "onexitdefinitiondestinationstring", "onexitdefinitionlabelstring", "onexitdefinitiontitlestring", "onexithardbreak", "onexithtmlflow", "onexithtmltext", "onexitimage", "onexitlabel", "onexitlabeltext", "onexitlineending", "onexitlink", "onexitreferencestring", "onexitresourcedestinationstring", "onexitresourcetitlestring", "onexitresource", "onexitsetextheading", "onexitsetextheadinglinesequence", "onexitsetextheadingtext", "configure", "data", "compile", "events", "tree", "context", "enter", "exit", "resume", "setData", "getData", "listStack", "index", "tail", "prepareList", "handler", "defaultOnError", "point", "start", "length", "containerBalance", "listSpread", "lineIndex", "firstBlankLineIndex", "atMarker", "event", "tailIndex", "tailEvent", "key", "create", "and", "open", "token", "node", "errorHandler", "close", "onExitError", "stringifyPosition", "toString", "ancestor", "label", "normalizeIdentifier", "depth", "text", "referenceType", "string", "decodeString", "fragment", "children", "type", "decodeNumericCharacterReference", "decodeNamedCharacterReference", "d", "combined", "extensions", "extension", "right", "left", "preprocessMarkdown", "markdown", "withoutMultipleNewlines", "dedent", "markdownToLines", "preprocessedMarkdown", "children", "fromMarkdown", "lines", "currentLine", "processNode", "node", "parentType", "textLine", "index", "word", "contentNode", "treeNode", "markdownToHTML", "output", "splitTextToChars", "text", "s", "splitWordToFitWidth", "checkFit", "characters", "splitWordToFitWidthRecursion", "usedChars", "remainingChars", "type", "nextChar", "rest", "newWord", "splitLineToFitWidth", "line", "content", "splitLineToFitWidthRecursion", "words", "newLine", "joiner", "nextWord", "lineWithNextWord", "applyStyle", "dom", "styleFn", "addHtmlSpan", "element", "width", "classes", "addBackground", "fo", "div", "label", "labelClass", "bbox", "createTspan", "textElement", "lineIndex", "lineHeight", "computeWidthOfText", "parentNode", "testElement", "testSpan", "updateTextContentAndStyles", "textLength", "createFormattedText", "g", "structuredText", "labelGroup", "bkg", "checkWidth", "line2", "linesUnderWidth", "preparedLine", "tspan", "padding", "wrappedLine", "innerTspan", "createText", "el", "style", "isTitle", "useHtmlLabels", "isNode", "addSvgBackground", "log$1", "htmlText", "decodeEntities"] +} diff --git a/public/chunk-YPWPK43L.min.js b/public/chunk-YPWPK43L.min.js new file mode 100644 index 0000000..d7b3881 --- /dev/null +++ b/public/chunk-YPWPK43L.min.js @@ -0,0 +1,5 @@ +import{a as Q}from"./chunk-VKCMXAYQ.min.js";import{$a as w,F as K,Fa as x,H as G,Ha as V,Ia as H,Ya as W,h as E,ob as A}from"./chunk-DJFTDYIK.min.js";var ct=(a,t,r,n)=>{t.forEach(e=>{ut[e](a,r,n)})},ht=(a,t,r)=>{x.trace("Making markers for ",r),a.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},ot=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},ft=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},pt=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},yt=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),a.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},dt=(a,t,r)=>{a.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),a.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},xt=(a,t,r)=>{a.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),a.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},bt=(a,t,r)=>{a.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),a.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},gt=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},ut={extension:ht,composition:ot,aggregation:ft,dependency:pt,lollipop:yt,point:dt,circle:xt,cross:bt,barb:gt},rr=ct;function wt(a,t){t&&a.attr("style",t)}function mt(a){let t=E(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=t.append("xhtml:div"),n=a.label,e=a.isNode?"nodeLabel":"edgeLabel";return r.html('"+n+""),wt(r,a.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),t.node()}var kt=(a,t,r,n)=>{let e=a||"";if(typeof e=="object"&&(e=e[0]),H(w().flowchart.htmlLabels)){e=e.replace(/\\n|\n/g,"
"),x.info("vertexText"+e);let i={isNode:n,label:A(e).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:t.replace("fill:","color:")};return mt(i)}else{let i=document.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("style",t.replace("color:","fill:"));let s=[];typeof e=="string"?s=e.split(/\\n|\n|/gi):Array.isArray(e)?s=e:s=[];for(let l of s){let c=document.createElementNS("http://www.w3.org/2000/svg","tspan");c.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),c.setAttribute("dy","1em"),c.setAttribute("x","0"),r?c.setAttribute("class","title-row"):c.setAttribute("class","row"),c.textContent=l.trim(),i.appendChild(c)}return i}},I=kt,_=async(a,t,r,n)=>{let e,i=t.useHtmlLabels||H(w().flowchart.htmlLabels);r?e=r:e="node default";let s=a.insert("g").attr("class",e).attr("id",t.domId||t.id),l=s.insert("g").attr("class","label").attr("style",t.labelStyle),c;t.labelText===void 0?c="":c=typeof t.labelText=="string"?t.labelText:t.labelText[0];let o=l.node(),h;t.labelType==="markdown"?h=Q(l,V(A(c),w()),{useHtmlLabels:i,width:t.width||w().flowchart.wrappingWidth,classes:"markdown-node-label"}):h=o.appendChild(I(V(A(c),w()),t.labelStyle,!1,n));let f=h.getBBox(),y=t.padding/2;if(H(w().flowchart.htmlLabels)){let p=h.children[0],u=E(h),k=p.getElementsByTagName("img");if(k){let g=c.replace(/]*>/g,"").trim()==="";await Promise.all([...k].map(d=>new Promise(b=>{function M(){if(d.style.display="flex",d.style.flexDirection="column",g){let C=w().fontSize?w().fontSize:window.getComputedStyle(document.body).fontSize,X=5;d.style.width=parseInt(C,10)*X+"px"}else d.style.width="100%";b(d)}setTimeout(()=>{d.complete&&M()}),d.addEventListener("error",M),d.addEventListener("load",M)})))}f=p.getBoundingClientRect(),u.attr("width",f.width),u.attr("height",f.height)}return i?l.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):l.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&l.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),l.insert("rect",":first-child"),{shapeSvg:s,bbox:f,halfPadding:y,label:l}},v=(a,t)=>{let r=t.node().getBBox();a.width=r.width,a.height=r.height};function $(a,t,r,n){return a.insert("polygon",":first-child").attr("points",n.map(function(e){return e.x+","+e.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}function vt(a,t){return a.intersect(t)}function it(a,t,r,n){var e=a.x,i=a.y,s=e-n.x,l=i-n.y,c=Math.sqrt(t*t*l*l+r*r*s*s),o=Math.abs(t*r*s/c);n.x0}function Et(a,t,r){var n=a.x,e=a.y,i=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(u){s=Math.min(s,u.x),l=Math.min(l,u.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));for(var c=n-a.width/2-s,o=e-a.height/2-l,h=0;h1&&i.sort(function(u,k){var g=u.x-r.x,d=u.y-r.y,b=Math.sqrt(g*g+d*d),M=k.x-r.x,C=k.y-r.y,X=Math.sqrt(M*M+C*C);return b{var r=a.x,n=a.y,e=t.x-r,i=t.y-n,s=a.width/2,l=a.height/2,c,o;return Math.abs(i)*s>Math.abs(e)*l?(i<0&&(l=-l),c=i===0?0:l*e/i,o=l):(e<0&&(s=-s),c=s,o=e===0?0:s*i/e),{x:r+c,y:n+o}},Mt=Bt,m={node:vt,circle:Lt,ellipse:it,polygon:Et,rect:Mt},_t=async(a,t)=>{t.useHtmlLabels||w().flowchart.htmlLabels||(t.centerLabel=!0);let{shapeSvg:n,bbox:e,halfPadding:i}=await _(a,t,"node "+t.classes,!0);x.info("Classes = ",t.classes);let s=n.insert("rect",":first-child");return s.attr("rx",t.rx).attr("ry",t.ry).attr("x",-e.width/2-i).attr("y",-e.height/2-i).attr("width",e.width+t.padding).attr("height",e.height+t.padding),v(t,s),t.intersect=function(l){return m.rect(t,l)},n},Ct=_t,tt=a=>a?" "+a:"",R=(a,t)=>`${t||"node default"}${tt(a.classes)} ${tt(a.class)}`,rt=async(a,t)=>{let{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=e+i,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];x.info("Question main (Circle)");let c=$(r,s,s,l);return c.attr("style",t.style),v(t,c),t.intersect=function(o){return x.warn("Intersect called"),m.polygon(t,l,o)},r},Tt=(a,t)=>{let r=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,e=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",e.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(s){return m.circle(t,14,s)},r},Rt=async(a,t)=>{let{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=4,i=n.height+t.padding,s=i/e,l=n.width+2*s+t.padding,c=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-i/2},{x:l-s,y:-i},{x:s,y:-i},{x:0,y:-i/2}],o=$(r,l,i,c);return o.attr("style",t.style),v(t,o),t.intersect=function(h){return m.polygon(t,c,h)},r},It=async(a,t)=>{let{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:-i/2,y:0},{x:e,y:0},{x:e,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}];return $(r,e,i,s).attr("style",t.style),t.width=e+i,t.height=i,t.intersect=function(c){return m.polygon(t,s,c)},r},Ht=async(a,t)=>{let{shapeSvg:r,bbox:n}=await _(a,t,R(t),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:-2*i/6,y:0},{x:e-i/6,y:0},{x:e+2*i/6,y:-i},{x:i/6,y:-i}],l=$(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Nt=async(a,t)=>{let{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:2*i/6,y:0},{x:e+i/6,y:0},{x:e-2*i/6,y:-i},{x:-i/6,y:-i}],l=$(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},$t=async(a,t)=>{let{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:-2*i/6,y:0},{x:e+2*i/6,y:0},{x:e-i/6,y:-i},{x:i/6,y:-i}],l=$(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Ot=async(a,t)=>{let{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:i/6,y:0},{x:e-i/6,y:0},{x:e+2*i/6,y:-i},{x:-2*i/6,y:-i}],l=$(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Xt=async(a,t)=>{let{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:0,y:0},{x:e+i/2,y:0},{x:e,y:-i/2},{x:e+i/2,y:-i},{x:0,y:-i}],l=$(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Yt=async(a,t)=>{let{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=e/2,s=i/(2.5+e/50),l=n.height+s+t.padding,c="M 0,"+s+" a "+i+","+s+" 0,0,0 "+e+" 0 a "+i+","+s+" 0,0,0 "+-e+" 0 l 0,"+l+" a "+i+","+s+" 0,0,0 "+e+" 0 l 0,"+-l,o=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",t.style).attr("d",c).attr("transform","translate("+-e/2+","+-(l/2+s)+")");return v(t,o),t.intersect=function(h){let f=m.rect(t,h),y=f.x-t.x;if(i!=0&&(Math.abs(y)t.height/2-s)){let p=s*s*(1-y*y/(i*i));p!=0&&(p=Math.sqrt(p)),p=s-p,h.y-t.y>0&&(p=-p),f.y+=p}return f},r},Wt=async(a,t)=>{let{shapeSvg:r,bbox:n,halfPadding:e}=await _(a,t,"node "+t.classes+" "+t.class,!0),i=r.insert("rect",":first-child"),s=n.width+t.padding,l=n.height+t.padding;if(i.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",-n.width/2-e).attr("y",-n.height/2-e).attr("width",s).attr("height",l),t.props){let c=new Set(Object.keys(t.props));t.props.borders&&(nt(i,t.props.borders,s,l),c.delete("borders")),c.forEach(o=>{x.warn(`Unknown node property ${o}`)})}return v(t,i),t.intersect=function(c){return m.rect(t,c)},r},Dt=async(a,t)=>{let{shapeSvg:r}=await _(a,t,"label",!0);x.trace("Classes = ",t.class);let n=r.insert("rect",":first-child"),e=0,i=0;if(n.attr("width",e).attr("height",i),r.attr("class","label edgeLabel"),t.props){let s=new Set(Object.keys(t.props));t.props.borders&&(nt(n,t.props.borders,e,i),s.delete("borders")),s.forEach(l=>{x.warn(`Unknown node property ${l}`)})}return v(t,n),t.intersect=function(s){return m.rect(t,s)},r};function nt(a,t,r,n){let e=[],i=l=>{e.push(l,0)},s=l=>{e.push(0,l)};t.includes("t")?(x.debug("add top border"),i(r)):s(r),t.includes("r")?(x.debug("add right border"),i(n)):s(n),t.includes("b")?(x.debug("add bottom border"),i(r)):s(r),t.includes("l")?(x.debug("add left border"),i(n)):s(n),a.attr("stroke-dasharray",e.join(" "))}var jt=(a,t)=>{let r;t.classes?r="node "+t.classes:r="node default";let n=a.insert("g").attr("class",r).attr("id",t.domId||t.id),e=n.insert("rect",":first-child"),i=n.insert("line"),s=n.insert("g").attr("class","label"),l=t.labelText.flat?t.labelText.flat():t.labelText,c="";typeof l=="object"?c=l[0]:c=l,x.info("Label text abc79",c,l,typeof l=="object");let o=s.node().appendChild(I(c,t.labelStyle,!0,!0)),h={width:0,height:0};if(H(w().flowchart.htmlLabels)){let k=o.children[0],g=E(o);h=k.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}x.info("Text 2",l);let f=l.slice(1,l.length),y=o.getBBox(),p=s.node().appendChild(I(f.join?f.join("
"):f,t.labelStyle,!0,!0));if(H(w().flowchart.htmlLabels)){let k=p.children[0],g=E(p);h=k.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}let u=t.padding/2;return E(p).attr("transform","translate( "+(h.width>y.width?0:(y.width-h.width)/2)+", "+(y.height+u+5)+")"),E(o).attr("transform","translate( "+(h.width{let{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.height+t.padding,i=n.width+e/4+t.padding,s=r.insert("rect",":first-child").attr("style",t.style).attr("rx",e/2).attr("ry",e/2).attr("x",-i/2).attr("y",-e/2).attr("width",i).attr("height",e);return v(t,s),t.intersect=function(l){return m.rect(t,l)},r},Ut=async(a,t)=>{let{shapeSvg:r,bbox:n,halfPadding:e}=await _(a,t,R(t,void 0),!0),i=r.insert("circle",":first-child");return i.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+e).attr("width",n.width+t.padding).attr("height",n.height+t.padding),x.info("Circle main"),v(t,i),t.intersect=function(s){return x.info("Circle intersect",t,n.width/2+e,s),m.circle(t,n.width/2+e,s)},r},zt=async(a,t)=>{let{shapeSvg:r,bbox:n,halfPadding:e}=await _(a,t,R(t,void 0),!0),i=5,s=r.insert("g",":first-child"),l=s.insert("circle"),c=s.insert("circle");return s.attr("class",t.class),l.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+e+i).attr("width",n.width+t.padding+i*2).attr("height",n.height+t.padding+i*2),c.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+e).attr("width",n.width+t.padding).attr("height",n.height+t.padding),x.info("DoubleCircle main"),v(t,l),t.intersect=function(o){return x.info("DoubleCircle intersect",t,n.width/2+e+i,o),m.circle(t,n.width/2+e+i,o)},r},Zt=async(a,t)=>{let{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:0,y:0},{x:e,y:0},{x:e,y:-i},{x:0,y:-i},{x:0,y:0},{x:-8,y:0},{x:e+8,y:0},{x:e+8,y:-i},{x:-8,y:-i},{x:-8,y:0}],l=$(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Ft=(a,t)=>{let r=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),v(t,n),t.intersect=function(e){return m.circle(t,7,e)},r},at=(a,t,r)=>{let n=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),e=70,i=10;r==="LR"&&(e=10,i=70);let s=n.append("rect").attr("x",-1*e/2).attr("y",-1*i/2).attr("width",e).attr("height",i).attr("class","fork-join");return v(t,s),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(l){return m.rect(t,l)},n},Jt=(a,t)=>{let r=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child"),e=r.insert("circle",":first-child");return e.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),v(t,e),t.intersect=function(i){return m.circle(t,7,i)},r},Qt=(a,t)=>{let r=t.padding/2,n=4,e=8,i;t.classes?i="node "+t.classes:i="node default";let s=a.insert("g").attr("class",i).attr("id",t.domId||t.id),l=s.insert("rect",":first-child"),c=s.insert("line"),o=s.insert("line"),h=0,f=n,y=s.insert("g").attr("class","label"),p=0,u=t.classData.annotations&&t.classData.annotations[0],k=t.classData.annotations[0]?"\xAB"+t.classData.annotations[0]+"\xBB":"",g=y.node().appendChild(I(k,t.labelStyle,!0,!0)),d=g.getBBox();if(H(w().flowchart.htmlLabels)){let L=g.children[0],S=E(g);d=L.getBoundingClientRect(),S.attr("width",d.width),S.attr("height",d.height)}t.classData.annotations[0]&&(f+=d.height+n,h+=d.width);let b=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(w().flowchart.htmlLabels?b+="<"+t.classData.type+">":b+="<"+t.classData.type+">");let M=y.node().appendChild(I(b,t.labelStyle,!0,!0));E(M).attr("class","classTitle");let C=M.getBBox();if(H(w().flowchart.htmlLabels)){let L=M.children[0],S=E(M);C=L.getBoundingClientRect(),S.attr("width",C.width),S.attr("height",C.height)}f+=C.height+n,C.width>h&&(h=C.width);let X=[];t.classData.members.forEach(L=>{let S=L.getDisplayDetails(),Y=S.displayText;w().flowchart.htmlLabels&&(Y=Y.replace(//g,">"));let N=y.node().appendChild(I(Y,S.cssStyle?S.cssStyle:t.labelStyle,!0,!0)),T=N.getBBox();if(H(w().flowchart.htmlLabels)){let J=N.children[0],j=E(N);T=J.getBoundingClientRect(),j.attr("width",T.width),j.attr("height",T.height)}T.width>h&&(h=T.width),f+=T.height+n,X.push(N)}),f+=e;let q=[];if(t.classData.methods.forEach(L=>{let S=L.getDisplayDetails(),Y=S.displayText;w().flowchart.htmlLabels&&(Y=Y.replace(//g,">"));let N=y.node().appendChild(I(Y,S.cssStyle?S.cssStyle:t.labelStyle,!0,!0)),T=N.getBBox();if(H(w().flowchart.htmlLabels)){let J=N.children[0],j=E(N);T=J.getBoundingClientRect(),j.attr("width",T.width),j.attr("height",T.height)}T.width>h&&(h=T.width),f+=T.height+n,q.push(N)}),f+=e,u){let L=(h-d.width)/2;E(g).attr("transform","translate( "+(-1*h/2+L)+", "+-1*f/2+")"),p=d.height+n}let lt=(h-C.width)/2;return E(M).attr("transform","translate( "+(-1*h/2+lt)+", "+(-1*f/2+p)+")"),p+=C.height+n,c.attr("class","divider").attr("x1",-h/2-r).attr("x2",h/2+r).attr("y1",-f/2-r+e+p).attr("y2",-f/2-r+e+p),p+=e,X.forEach(L=>{E(L).attr("transform","translate( "+-h/2+", "+(-1*f/2+p+e/2)+")");let S=L?.getBBox();p+=(S?.height??0)+n}),p+=e,o.attr("class","divider").attr("x1",-h/2-r).attr("x2",h/2+r).attr("y1",-f/2-r+e+p).attr("y2",-f/2-r+e+p),p+=e,q.forEach(L=>{E(L).attr("transform","translate( "+-h/2+", "+(-1*f/2+p)+")");let S=L?.getBBox();p+=(S?.height??0)+n}),l.attr("class","outer title-state").attr("x",-h/2-r).attr("y",-(f/2)-r).attr("width",h+t.padding).attr("height",f+t.padding),v(t,l),t.intersect=function(L){return m.rect(t,L)},s},et={rhombus:rt,question:rt,rect:Wt,labelRect:Dt,rectWithTitle:jt,choice:Tt,circle:Ut,doublecircle:zt,stadium:At,hexagon:Rt,rect_left_inv_arrow:It,lean_right:Ht,lean_left:Nt,trapezoid:$t,inv_trapezoid:Ot,rect_right_inv_arrow:Xt,cylinder:Yt,start:Ft,end:Jt,note:Ct,subroutine:Zt,fork:at,join:at,class_box:Qt},D={},ar=async(a,t,r)=>{let n,e;if(t.link){let i;w().securityLevel==="sandbox"?i="_top":t.linkTarget&&(i=t.linkTarget||"_blank"),n=a.insert("svg:a").attr("xlink:href",t.link).attr("target",i),e=await et[t.shape](n,t,r)}else e=await et[t.shape](a,t,r),n=e;return t.tooltip&&e.attr("title",t.tooltip),t.class&&e.attr("class","node default "+t.class),D[t.id]=n,t.haveCallback&&D[t.id].attr("class",D[t.id].attr("class")+" clickable"),n},er=(a,t)=>{D[t.id]=a},sr=()=>{D={}},ir=a=>{let t=D[a.id];x.trace("Transforming node",a.diff,a,"translate("+(a.x-a.width/2-5)+", "+a.width/2+")");let r=8,n=a.diff||0;return a.clusterNode?t.attr("transform","translate("+(a.x+n-a.width/2)+", "+(a.y-a.height/2-r)+")"):t.attr("transform","translate("+a.x+", "+a.y+")"),n},O={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:5.3};function U(a,t){a=Z(a),t=Z(t);let[r,n]=[a.x,a.y],[e,i]=[t.x,t.y],s=e-r,l=i-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}var Z=a=>Array.isArray(a)?{x:a[0],y:a[1]}:a,Vt=a=>({x:function(t,r,n){let e=0;if(r===0&&Object.hasOwn(O,a.arrowTypeStart)){let{angle:i,deltaX:s}=U(n[0],n[1]);e=O[a.arrowTypeStart]*Math.cos(i)*(s>=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(O,a.arrowTypeEnd)){let{angle:i,deltaX:s}=U(n[n.length-1],n[n.length-2]);e=O[a.arrowTypeEnd]*Math.cos(i)*(s>=0?1:-1)}return Z(t).x+e},y:function(t,r,n){let e=0;if(r===0&&Object.hasOwn(O,a.arrowTypeStart)){let{angle:i,deltaY:s}=U(n[0],n[1]);e=O[a.arrowTypeStart]*Math.abs(Math.sin(i))*(s>=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(O,a.arrowTypeEnd)){let{angle:i,deltaY:s}=U(n[n.length-1],n[n.length-2]);e=O[a.arrowTypeEnd]*Math.abs(Math.sin(i))*(s>=0?1:-1)}return Z(t).y+e}}),F={},B={},nr=()=>{F={},B={}},lr=(a,t)=>{let r=H(w().flowchart.htmlLabels),n=t.labelType==="markdown"?Q(a,t.label,{style:t.labelStyle,useHtmlLabels:r,addSvgBackground:!0}):I(t.label,t.labelStyle);x.info("abc82",t,t.labelType);let e=a.insert("g").attr("class","edgeLabel"),i=e.insert("g").attr("class","label");i.node().appendChild(n);let s=n.getBBox();if(r){let c=n.children[0],o=E(n);s=c.getBoundingClientRect(),o.attr("width",s.width),o.attr("height",s.height)}i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),F[t.id]=e,t.width=s.width,t.height=s.height;let l;if(t.startLabelLeft){let c=I(t.startLabelLeft,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);let f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),B[t.id]||(B[t.id]={}),B[t.id].startLeft=o,z(l,t.startLabelLeft)}if(t.startLabelRight){let c=I(t.startLabelRight,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=o.node().appendChild(c),h.node().appendChild(c);let f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),B[t.id]||(B[t.id]={}),B[t.id].startRight=o,z(l,t.startLabelRight)}if(t.endLabelLeft){let c=I(t.endLabelLeft,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);let f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),o.node().appendChild(c),B[t.id]||(B[t.id]={}),B[t.id].endLeft=o,z(l,t.endLabelLeft)}if(t.endLabelRight){let c=I(t.endLabelRight,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);let f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),o.node().appendChild(c),B[t.id]||(B[t.id]={}),B[t.id].endRight=o,z(l,t.endLabelRight)}return n};function z(a,t){w().flowchart.htmlLabels&&a&&(a.style.width=t.length*9+"px",a.style.height="12px")}var cr=(a,t)=>{x.info("Moving label abc78 ",a.id,a.label,F[a.id]);let r=t.updatedPath?t.updatedPath:t.originalPath;if(a.label){let n=F[a.id],e=a.x,i=a.y;if(r){let s=W.calcLabelPosition(r);x.info("Moving label "+a.label+" from (",e,",",i,") to (",s.x,",",s.y,") abc78"),t.updatedPath&&(e=s.x,i=s.y)}n.attr("transform","translate("+e+", "+i+")")}if(a.startLabelLeft){let n=B[a.id].startLeft,e=a.x,i=a.y;if(r){let s=W.calcTerminalLabelPosition(a.arrowTypeStart?10:0,"start_left",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}if(a.startLabelRight){let n=B[a.id].startRight,e=a.x,i=a.y;if(r){let s=W.calcTerminalLabelPosition(a.arrowTypeStart?10:0,"start_right",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}if(a.endLabelLeft){let n=B[a.id].endLeft,e=a.x,i=a.y;if(r){let s=W.calcTerminalLabelPosition(a.arrowTypeEnd?10:0,"end_left",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}if(a.endLabelRight){let n=B[a.id].endRight,e=a.x,i=a.y;if(r){let s=W.calcTerminalLabelPosition(a.arrowTypeEnd?10:0,"end_right",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}},qt=(a,t)=>{let r=a.x,n=a.y,e=Math.abs(t.x-r),i=Math.abs(t.y-n),s=a.width/2,l=a.height/2;return e>=s||i>=l},Kt=(a,t,r)=>{x.warn(`intersection calc abc89: + outsidePoint: ${JSON.stringify(t)} + insidePoint : ${JSON.stringify(r)} + node : x:${a.x} y:${a.y} w:${a.width} h:${a.height}`);let n=a.x,e=a.y,i=Math.abs(n-r.x),s=a.width/2,l=r.xMath.abs(n-t.x)*c){let f=r.y{x.warn("abc88 cutPathAtIntersect",a,t);let r=[],n=a[0],e=!1;return a.forEach(i=>{if(x.info("abc88 checking point",i,t),!qt(t,i)&&!e){let s=Kt(t,n,i);x.warn("abc88 inside",i,n,s),x.warn("abc88 intersection",s);let l=!1;r.forEach(c=>{l=l||c.x===s.x&&c.y===s.y}),r.some(c=>c.x===s.x&&c.y===s.y)?x.warn("abc88 no intersect",s,r):r.push(s),e=!0}else x.warn("abc88 outside",i,n),n=i,e||r.push(i)}),x.warn("abc88 returning points",r),r},hr=function(a,t,r,n,e,i,s){let l=r.points,c=!1,o=i.node(t.v);var h=i.node(t.w);x.info("abc88 InsertEdge: ",r),h.intersect&&o.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(o.intersect(l[0])),x.info("Last point",l[l.length-1],h,h.intersect(l[l.length-1])),l.push(h.intersect(l[l.length-1]))),r.toCluster&&(x.info("to cluster abc88",n[r.toCluster]),l=st(r.points,n[r.toCluster].node),c=!0),r.fromCluster&&(x.info("from cluster abc88",n[r.fromCluster]),l=st(l.reverse(),n[r.fromCluster].node).reverse(),c=!0);let f=l.filter(C=>!Number.isNaN(C.y)),y=G;r.curve&&(e==="graph"||e==="flowchart")&&(y=r.curve);let{x:p,y:u}=Vt(r),k=K().x(p).y(u).curve(y),g;switch(r.thickness){case"normal":g="edge-thickness-normal";break;case"thick":g="edge-thickness-thick";break;case"invisible":g="edge-thickness-thick";break;default:g=""}switch(r.pattern){case"solid":g+=" edge-pattern-solid";break;case"dotted":g+=" edge-pattern-dotted";break;case"dashed":g+=" edge-pattern-dashed";break}let d=a.append("path").attr("d",k(f)).attr("id",r.id).attr("class"," "+g+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";switch((w().flowchart.arrowMarkerAbsolute||w().state.arrowMarkerAbsolute)&&(b=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,b=b.replace(/\(/g,"\\("),b=b.replace(/\)/g,"\\)")),x.info("arrowTypeStart",r.arrowTypeStart),x.info("arrowTypeEnd",r.arrowTypeEnd),r.arrowTypeStart){case"arrow_cross":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-crossStart)");break;case"arrow_point":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-pointStart)");break;case"arrow_barb":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-barbStart)");break;case"arrow_circle":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-circleStart)");break;case"aggregation":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-aggregationStart)");break;case"extension":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-extensionStart)");break;case"composition":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-compositionStart)");break;case"dependency":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-dependencyStart)");break;case"lollipop":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-lollipopStart)");break}switch(r.arrowTypeEnd){case"arrow_cross":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-crossEnd)");break;case"arrow_point":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-pointEnd)");break;case"arrow_barb":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-barbEnd)");break;case"arrow_circle":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-circleEnd)");break;case"aggregation":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-aggregationEnd)");break;case"extension":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-extensionEnd)");break;case"composition":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-compositionEnd)");break;case"dependency":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-dependencyEnd)");break;case"lollipop":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-lollipopEnd)");break}let M={};return c&&(M.updatedPath=l),M.originalPath=r.points,M};export{rr as a,I as b,_ as c,v as d,Mt as e,ar as f,er as g,sr as h,ir as i,Vt as j,nr as k,lr as l,cr as m,hr as n}; +//# sourceMappingURL=chunk-YPWPK43L.min.js.map diff --git a/public/chunk-YPWPK43L.min.js.map b/public/chunk-YPWPK43L.min.js.map new file mode 100644 index 0000000..69a277c --- /dev/null +++ b/public/chunk-YPWPK43L.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/mermaid/dist/edges-bc33a094.js"], + "sourcesContent": ["import { l as log, m as evaluate, c as getConfig, J as decodeEntities, d as sanitizeText, u as utils } from \"./mermaid-485fd1a4.js\";\nimport { select, line, curveBasis } from \"d3\";\nimport { c as createText } from \"./createText-b3507a77.js\";\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\nconst extension = (elem, type, id) => {\n log.trace(\"Making markers for \", id);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n};\nconst composition = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst aggregation = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst dependency = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 6).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst lollipop = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopEnd\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n};\nconst point = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 6).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 4.5).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 5 L 10 10 L 10 0 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst circle$1 = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 11).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", -1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst cross = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", 12).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", -1).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n};\nconst barb = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-barbEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 14).attr(\"markerUnits\", \"strokeWidth\").attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n};\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle: circle$1,\n cross,\n barb\n};\nconst insertMarkers$1 = insertMarkers;\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlLabel(node) {\n const fo = select(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n '\" + label + \"\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"
\");\n log.info(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\nconst createLabel$1 = createLabel;\nconst labelHelper = async (parent, node, _classes, isNode) => {\n let classes;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig().flowchart.htmlLabels);\n if (!_classes) {\n classes = \"node default\";\n } else {\n classes = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(label, sanitizeText(decodeEntities(labelText), getConfig()), {\n useHtmlLabels,\n width: node.width || getConfig().flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n });\n } else {\n text = textNode.appendChild(\n createLabel$1(\n sanitizeText(decodeEntities(labelText), getConfig()),\n node.labelStyle,\n false,\n isNode\n )\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = getConfig().fontSize ? getConfig().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n img.style.width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n};\nconst updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\nfunction intersectCircle(node, rx, point2) {\n return intersectEllipse(node, rx, rx, point2);\n}\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect2 = intersectLine(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect2) {\n intersections.push(intersect2);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\nconst intersectRect = (node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n};\nconst intersectRect$1 = intersectRect;\nconst intersect = {\n node: intersectNode,\n circle: intersectCircle,\n ellipse: intersectEllipse,\n polygon: intersectPolygon,\n rect: intersectRect$1\n};\nconst note = async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst note$1 = note;\nconst formatClass = (str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n};\nconst getClassesFromNode = (node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n};\nconst question = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst choice = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect.circle(node, 14, point2);\n };\n return shapeSvg;\n};\nconst hexagon = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_left_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_right = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_left = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst inv_trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_right_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst cylinder = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n};\nconst rect = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = bbox.width + node.padding;\n const totalHeight = bbox.height + node.padding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst labelRect = async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length, 0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0, length);\n };\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\nconst rectWithTitle = (parent, node) => {\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(createLabel$1(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n createLabel$1(textRows.join ? textRows.join(\"
\") : textRows, node.labelStyle, true, true)\n );\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst stadium = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst circle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n};\nconst doublecircle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n};\nconst subroutine = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst start = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst end = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"\u00AB\" + node.classData.annotations[0] + \"\u00BB\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(createLabel$1(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getConfig().flowchart.htmlLabels) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(createLabel$1(classTitleString, node.labelStyle, true, true));\n select(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n parsedText = parsedText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n displayText = displayText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst shapes = {\n rhombus: question,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note$1,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nlet nodeElems = {};\nconst insertNode = async (elem, node, dir) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, dir);\n } else {\n el = await shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n};\nconst setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nconst clear$1 = () => {\n nodeElems = {};\n};\nconst positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n};\nconst markerOffsets = {\n aggregation: 18,\n extension: 18,\n composition: 18,\n dependency: 6,\n lollipop: 13.5,\n arrow_point: 5.3\n};\nfunction calculateDeltaAndAngle(point1, point2) {\n point1 = pointTransformer(point1);\n point2 = pointTransformer(point2);\n const [x1, y1] = [point1.x, point1.y];\n const [x2, y2] = [point2.x, point2.y];\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY };\n}\nconst pointTransformer = (data) => {\n if (Array.isArray(data)) {\n return { x: data[0], y: data[1] };\n }\n return data;\n};\nconst getLineFunctionsWithOffset = (edge) => {\n return {\n x: function(d, i, data) {\n let offset = 0;\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);\n offset = markerOffsets[edge.arrowTypeStart] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaX } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset = markerOffsets[edge.arrowTypeEnd] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n }\n return pointTransformer(d).x + offset;\n },\n y: function(d, i, data) {\n let offset = 0;\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);\n offset = markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaY } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset = markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n }\n return pointTransformer(d).y + offset;\n }\n };\n};\nlet edgeLabels = {};\nlet terminalLabels = {};\nconst clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\nconst insertEdgeLabel = (elem, edge) => {\n const useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? createText(elem, edge.label, {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n }) : createLabel$1(edge.label, edge.labelStyle);\n log.info(\"abc82\", edge, edge.labelType);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = createLabel$1(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = createLabel$1(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = createLabel$1(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = createLabel$1(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\nfunction setTerminalWidth(fo, value) {\n if (getConfig().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\nconst positionEdgeLabel = (edge, paths) => {\n log.info(\"Moving label abc78 \", edge.id, edge.label, edgeLabels[edge.id]);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcLabelPosition(path);\n log.info(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc78\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n};\nconst outsideNode = (node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\nconst intersection = (node, outsidePoint, insidePoint) => {\n log.warn(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.warn(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.warn(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n};\nconst cutPathAtIntersect = (_points, boundryNode) => {\n log.warn(\"abc88 cutPathAtIntersect\", _points, boundryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n log.info(\"abc88 checking point\", point2, boundryNode);\n if (!outsideNode(boundryNode, point2) && !isInside) {\n const inter = intersection(boundryNode, lastPointOutside, point2);\n log.warn(\"abc88 inside\", point2, lastPointOutside, inter);\n log.warn(\"abc88 intersection\", inter);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n log.warn(\"abc88 no intersect\", inter, points);\n }\n isInside = true;\n } else {\n log.warn(\"abc88 outside\", point2, lastPointOutside);\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n log.warn(\"abc88 returning points\", points);\n return points;\n};\nconst insertEdge = function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n log.info(\"abc88 InsertEdge: \", edge);\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n log.info(\n \"Last point\",\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.info(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.info(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve = curveBasis;\n if (edge.curve && (diagramType === \"graph\" || diagramType === \"flowchart\")) {\n curve = edge.curve;\n }\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n log.info(\"arrowTypeStart\", edge.arrowTypeStart);\n log.info(\"arrowTypeEnd\", edge.arrowTypeEnd);\n switch (edge.arrowTypeStart) {\n case \"arrow_cross\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-crossStart)\"\n );\n break;\n case \"arrow_point\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-pointStart)\"\n );\n break;\n case \"arrow_barb\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-barbStart)\"\n );\n break;\n case \"arrow_circle\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-circleStart)\"\n );\n break;\n case \"aggregation\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-aggregationStart)\"\n );\n break;\n case \"extension\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-extensionStart)\"\n );\n break;\n case \"composition\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-compositionStart)\"\n );\n break;\n case \"dependency\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-dependencyStart)\"\n );\n break;\n case \"lollipop\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-lollipopStart)\"\n );\n break;\n }\n switch (edge.arrowTypeEnd) {\n case \"arrow_cross\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-crossEnd)\");\n break;\n case \"arrow_point\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-pointEnd)\");\n break;\n case \"arrow_barb\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-barbEnd)\");\n break;\n case \"arrow_circle\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-circleEnd)\");\n break;\n case \"aggregation\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-aggregationEnd)\"\n );\n break;\n case \"extension\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-extensionEnd)\"\n );\n break;\n case \"composition\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-compositionEnd)\"\n );\n break;\n case \"dependency\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-dependencyEnd)\"\n );\n break;\n case \"lollipop\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-lollipopEnd)\"\n );\n break;\n }\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\nexport {\n insertMarkers$1 as a,\n clear$1 as b,\n createLabel$1 as c,\n clear as d,\n insertNode as e,\n insertEdgeLabel as f,\n insertEdge as g,\n positionEdgeLabel as h,\n intersectRect$1 as i,\n getLineFunctionsWithOffset as j,\n labelHelper as l,\n positionNode as p,\n setNodeElem as s,\n updateNodeBounds as u\n};\n"], + "mappings": "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", + "names": ["insertMarkers", "elem", "markerArray", "type", "id", "markerName", "markers", "extension", "log$1", "composition", "aggregation", "dependency", "lollipop", "point", "circle$1", "cross", "barb", "insertMarkers$1", "applyStyle", "dom", "styleFn", "addHtmlLabel", "node", "fo", "select_default", "div", "label", "labelClass", "createLabel", "_vertexText", "style", "isTitle", "isNode", "vertexText", "evaluate", "getConfig$1", "decodeEntities", "s", "svgLabel", "rows", "row", "tspan", "createLabel$1", "labelHelper", "parent", "_classes", "classes", "useHtmlLabels", "shapeSvg", "labelText", "textNode", "text", "createText", "sanitizeText$2", "bbox", "halfPadding", "dv", "images", "noImgText", "img", "res", "setupImage", "bodyFontSize", "enlargingFactor", "updateNodeBounds", "element", "insertPolygonShape", "w", "h", "points", "d", "intersectNode", "point2", "intersectEllipse", "rx", "ry", "cx", "cy", "px", "py", "det", "dx", "dy", "intersectCircle", "intersectLine", "p1", "p2", "q1", "q2", "a1", "a2", "b1", "b2", "c1", "c2", "r1", "r2", "r3", "r4", "denom", "offset", "num", "x", "y", "sameSign", "intersectPolygon", "polyPoints", "x1", "y1", "intersections", "minX", "minY", "entry", "left", "top", "i", "intersect2", "p", "q", "pdx", "pdy", "distp", "qdx", "qdy", "distq", "intersectRect", "sx", "sy", "intersectRect$1", "intersect", "note", "rect2", "note$1", "formatClass", "str", "getClassesFromNode", "otherClasses", "question", "questionElem", "choice", "hexagon", "f", "m", "hex", "rect_left_inv_arrow", "lean_right", "el", "lean_left", "trapezoid", "inv_trapezoid", "rect_right_inv_arrow", "cylinder", "shape", "pos", "rect", "totalWidth", "totalHeight", "propKeys", "applyNodePropertyBorders", "propKey", "labelRect", "borders", "strokeDashArray", "addBorder", "length", "skipBorder", "rectWithTitle", "innerLine", "text2", "title", "textRows", "titleBox", "descr", "stadium", "circle", "circle2", "doublecircle", "gap", "circleGroup", "outerCircle", "innerCircle", "subroutine", "start", "forkJoin", "dir", "width", "height", "end", "class_box", "rowPadding", "lineHeight", "topLine", "bottomLine", "maxWidth", "maxHeight", "labelContainer", "verticalPos", "hasInterface", "interfaceLabelText", "interfaceLabel", "interfaceBBox", "classTitleString", "classTitleLabel", "classTitleBBox", "classAttributes", "member", "parsedInfo", "parsedText", "lbl", "classMethods", "displayText", "diffX2", "diffX", "memberBBox", "shapes", "nodeElems", "insertNode", "newEl", "target", "setNodeElem", "clear$1", "positionNode", "padding", "diff", "markerOffsets", "calculateDeltaAndAngle", "point1", "pointTransformer", "x2", "y2", "deltaX", "deltaY", "data", "getLineFunctionsWithOffset", "edge", "angle", "edgeLabels", "terminalLabels", "clear", "insertEdgeLabel", "labelElement", "edgeLabel", "startLabelElement", "startEdgeLabelLeft", "inner", "slBox", "setTerminalWidth", "startEdgeLabelRight", "endLabelElement", "endEdgeLabelLeft", "endEdgeLabelRight", "value", "positionEdgeLabel", "paths", "path", "utils", "outsideNode", "intersection", "outsidePoint", "insidePoint", "r", "Q", "R", "_x", "_y", "cutPathAtIntersect", "_points", "boundryNode", "lastPointOutside", "isInside", "inter", "pointPresent", "e", "insertEdge", "clusterDb", "diagramType", "graph", "pointsHasChanged", "tail", "head", "lineData", "curve", "basis_default", "lineFunction", "line_default", "strokeClasses", "svgPath", "url"] +} diff --git a/public/classDiagram-bfe30095-CGDYITKI.min.js b/public/classDiagram-bfe30095-CGDYITKI.min.js new file mode 100644 index 0000000..b5532b7 --- /dev/null +++ b/public/classDiagram-bfe30095-CGDYITKI.min.js @@ -0,0 +1,3 @@ +import{a as G,b as v,c as I}from"./chunk-RE5CTVCE.min.js";import{j as A,k as W}from"./chunk-LLUSN4ZV.min.js";import{$a as S,F as _,Fa as y,H as C,I as R,Ja as O,Ya as T,b as J,bb as P,c as Z,h as E}from"./chunk-DJFTDYIK.min.js";import{d as N}from"./chunk-P42HNYSU.min.js";var at=N(J(),1),it=N(Z(),1),nt=N(R(),1);var X=0,F=function(i,r,t,o,p){let g=function(e){switch(e){case p.db.relationType.AGGREGATION:return"aggregation";case p.db.relationType.EXTENSION:return"extension";case p.db.relationType.COMPOSITION:return"composition";case p.db.relationType.DEPENDENCY:return"dependency";case p.db.relationType.LOLLIPOP:return"lollipop"}};r.points=r.points.filter(e=>!Number.isNaN(e.y));let s=r.points,c=_().x(function(e){return e.x}).y(function(e){return e.y}).curve(C),n=i.append("path").attr("d",c(s)).attr("id","edge"+X).attr("class","relation"),a="";o.arrowMarkerAbsolute&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,a=a.replace(/\(/g,"\\("),a=a.replace(/\)/g,"\\)")),t.relation.lineType==1&&n.attr("class","relation dashed-line"),t.relation.lineType==10&&n.attr("class","relation dotted-line"),t.relation.type1!=="none"&&n.attr("marker-start","url("+a+"#"+g(t.relation.type1)+"Start)"),t.relation.type2!=="none"&&n.attr("marker-end","url("+a+"#"+g(t.relation.type2)+"End)");let f,h,x=r.points.length,b=T.calcLabelPosition(r.points);f=b.x,h=b.y;let u,m,w,k;if(x%2!==0&&x>1){let e=T.calcCardinalityPosition(t.relation.type1!=="none",r.points,r.points[0]),d=T.calcCardinalityPosition(t.relation.type2!=="none",r.points,r.points[x-1]);y.debug("cardinality_1_point "+JSON.stringify(e)),y.debug("cardinality_2_point "+JSON.stringify(d)),u=e.x,m=e.y,w=d.x,k=d.y}if(t.title!==void 0){let e=i.append("g").attr("class","classLabel"),d=e.append("text").attr("class","label").attr("x",f).attr("y",h).attr("fill","red").attr("text-anchor","middle").text(t.title);window.label=d;let l=d.node().getBBox();e.insert("rect",":first-child").attr("class","box").attr("x",l.x-o.padding/2).attr("y",l.y-o.padding/2).attr("width",l.width+o.padding).attr("height",l.height+o.padding)}y.info("Rendering relation "+JSON.stringify(t)),t.relationTitle1!==void 0&&t.relationTitle1!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",u).attr("y",m).attr("fill","black").attr("font-size","6").text(t.relationTitle1),t.relationTitle2!==void 0&&t.relationTitle2!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",w).attr("y",k).attr("fill","black").attr("font-size","6").text(t.relationTitle2),X++},U=function(i,r,t,o){y.debug("Rendering class ",r,t);let p=r.id,g={id:p,label:r.id,width:0,height:0},s=i.append("g").attr("id",o.db.lookUpDomId(p)).attr("class","classGroup"),c;r.link?c=s.append("svg:a").attr("xlink:href",r.link).attr("target",r.linkTarget).append("text").attr("y",t.textHeight+t.padding).attr("x",0):c=s.append("text").attr("y",t.textHeight+t.padding).attr("x",0);let n=!0;r.annotations.forEach(function(d){let l=c.append("tspan").text("\xAB"+d+"\xBB");n||l.attr("dy",t.textHeight),n=!1});let a=$(r),f=c.append("tspan").text(a).attr("class","title");n||f.attr("dy",t.textHeight);let h=c.node().getBBox().height,x,b,u;if(r.members.length>0){x=s.append("line").attr("x1",0).attr("y1",t.padding+h+t.dividerMargin/2).attr("y2",t.padding+h+t.dividerMargin/2);let d=s.append("text").attr("x",t.padding).attr("y",h+t.dividerMargin+t.textHeight).attr("fill","white").attr("class","classText");n=!0,r.members.forEach(function(l){Y(d,l,n,t),n=!1}),b=d.node().getBBox()}if(r.methods.length>0){u=s.append("line").attr("x1",0).attr("y1",t.padding+h+t.dividerMargin+b.height).attr("y2",t.padding+h+t.dividerMargin+b.height);let d=s.append("text").attr("x",t.padding).attr("y",h+2*t.dividerMargin+b.height+t.textHeight).attr("fill","white").attr("class","classText");n=!0,r.methods.forEach(function(l){Y(d,l,n,t),n=!1})}let m=s.node().getBBox();var w=" ";r.cssClasses.length>0&&(w=w+r.cssClasses.join(" "));let e=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",m.width+2*t.padding).attr("height",m.height+t.padding+.5*t.dividerMargin).attr("class",w).node().getBBox().width;return c.node().childNodes.forEach(function(d){d.setAttribute("x",(e-d.getBBox().width)/2)}),r.tooltip&&c.insert("title").text(r.tooltip),x&&x.attr("x2",e),u&&u.attr("x2",e),g.width=e,g.height=m.height+t.padding+.5*t.dividerMargin,g},$=function(i){let r=i.id;return i.type&&(r+="<"+O(i.type)+">"),r},z=function(i,r,t,o){y.debug("Rendering note ",r,t);let p=r.id,g={id:p,text:r.text,width:0,height:0},s=i.append("g").attr("id",p).attr("class","classGroup"),c=s.append("text").attr("y",t.textHeight+t.padding).attr("x",0),n=JSON.parse(`"${r.text}"`).split(` +`);n.forEach(function(x){y.debug(`Adding line: ${x}`),c.append("tspan").text(x).attr("class","title").attr("dy",t.textHeight)});let a=s.node().getBBox(),h=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",a.width+2*t.padding).attr("height",a.height+n.length*t.textHeight+t.padding+.5*t.dividerMargin).node().getBBox().width;return c.node().childNodes.forEach(function(x){x.setAttribute("x",(h-x.getBBox().width)/2)}),g.width=h,g.height=a.height+n.length*t.textHeight+t.padding+.5*t.dividerMargin,g},Y=function(i,r,t,o){let{displayText:p,cssStyle:g}=r.getDisplayDetails(),s=i.append("tspan").attr("x",o.padding).text(p);g!==""&&s.attr("style",r.cssStyle),t||s.attr("dy",o.textHeight)},H={getClassTitleString:$,drawClass:U,drawEdge:F,drawNote:z},M={},B=20,L=function(i){let r=Object.entries(M).find(t=>t[1].label===i);if(r)return r[0]},V=function(i){i.append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),i.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},q=function(i,r,t,o){let p=S().class;M={},y.info("Rendering diagram "+i);let g=S().securityLevel,s;g==="sandbox"&&(s=E("#i"+r));let c=g==="sandbox"?E(s.nodes()[0].contentDocument.body):E("body"),n=c.select(`[id='${r}']`);V(n);let a=new A({multigraph:!0});a.setGraph({isMultiGraph:!0}),a.setDefaultEdgeLabel(function(){return{}});let f=o.db.getClasses(),h=Object.keys(f);for(let e of h){let d=f[e],l=H.drawClass(n,d,p,o);M[l.id]=l,a.setNode(l.id,l),y.info("Org height: "+l.height)}o.db.getRelations().forEach(function(e){y.info("tjoho"+L(e.id1)+L(e.id2)+JSON.stringify(e)),a.setEdge(L(e.id1),L(e.id2),{relation:e},e.title||"DEFAULT")}),o.db.getNotes().forEach(function(e){y.debug(`Adding note: ${JSON.stringify(e)}`);let d=H.drawNote(n,e,p,o);M[d.id]=d,a.setNode(d.id,d),e.class&&e.class in f&&a.setEdge(e.id,L(e.class),{relation:{id1:e.id,id2:e.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")}),W(a),a.nodes().forEach(function(e){e!==void 0&&a.node(e)!==void 0&&(y.debug("Node "+e+": "+JSON.stringify(a.node(e))),c.select("#"+(o.db.lookUpDomId(e)||e)).attr("transform","translate("+(a.node(e).x-a.node(e).width/2)+","+(a.node(e).y-a.node(e).height/2)+" )"))}),a.edges().forEach(function(e){e!==void 0&&a.edge(e)!==void 0&&(y.debug("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(a.edge(e))),H.drawEdge(n,a.edge(e),a.edge(e).relation,p,o))});let u=n.node().getBBox(),m=u.width+B*2,w=u.height+B*2;P(n,w,m,p.useMaxWidth);let k=`${u.x-B} ${u.y-B} ${m} ${w}`;y.debug(`viewBox ${k}`),n.attr("viewBox",k)},K={draw:q},dt={parser:G,db:v,renderer:K,styles:I,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,v.clear()}};export{dt as diagram}; +//# sourceMappingURL=classDiagram-bfe30095-CGDYITKI.min.js.map diff --git a/public/classDiagram-bfe30095-CGDYITKI.min.js.map b/public/classDiagram-bfe30095-CGDYITKI.min.js.map new file mode 100644 index 0000000..8161178 --- /dev/null +++ b/public/classDiagram-bfe30095-CGDYITKI.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/mermaid/dist/classDiagram-bfe30095.js"], + "sourcesContent": ["import { p as parser, d as db, s as styles } from \"./styles-c47180b5.js\";\nimport { line, curveBasis, select } from \"d3\";\nimport { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { u as utils, l as log, v as parseGenericTypes, c as getConfig, i as configureSvgSize } from \"./mermaid-485fd1a4.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nlet edgeCount = 0;\nconst drawEdge = function(elem, path, relation, conf, diagObj) {\n const getRelationType = function(type) {\n switch (type) {\n case diagObj.db.relationType.AGGREGATION:\n return \"aggregation\";\n case diagObj.db.relationType.EXTENSION:\n return \"extension\";\n case diagObj.db.relationType.COMPOSITION:\n return \"composition\";\n case diagObj.db.relationType.DEPENDENCY:\n return \"dependency\";\n case diagObj.db.relationType.LOLLIPOP:\n return \"lollipop\";\n }\n };\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n const lineData = path.points;\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curveBasis);\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", \"edge\" + edgeCount).attr(\"class\", \"relation\");\n let url = \"\";\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n if (relation.relation.lineType == 1) {\n svgPath.attr(\"class\", \"relation dashed-line\");\n }\n if (relation.relation.lineType == 10) {\n svgPath.attr(\"class\", \"relation dotted-line\");\n }\n if (relation.relation.type1 !== \"none\") {\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + getRelationType(relation.relation.type1) + \"Start)\"\n );\n }\n if (relation.relation.type2 !== \"none\") {\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + getRelationType(relation.relation.type2) + \"End)\"\n );\n }\n let x, y;\n const l = path.points.length;\n let labelPosition = utils.calcLabelPosition(path.points);\n x = labelPosition.x;\n y = labelPosition.y;\n let p1_card_x, p1_card_y;\n let p2_card_x, p2_card_y;\n if (l % 2 !== 0 && l > 1) {\n let cardinality_1_point = utils.calcCardinalityPosition(\n relation.relation.type1 !== \"none\",\n path.points,\n path.points[0]\n );\n let cardinality_2_point = utils.calcCardinalityPosition(\n relation.relation.type2 !== \"none\",\n path.points,\n path.points[l - 1]\n );\n log.debug(\"cardinality_1_point \" + JSON.stringify(cardinality_1_point));\n log.debug(\"cardinality_2_point \" + JSON.stringify(cardinality_2_point));\n p1_card_x = cardinality_1_point.x;\n p1_card_y = cardinality_1_point.y;\n p2_card_x = cardinality_2_point.x;\n p2_card_y = cardinality_2_point.y;\n }\n if (relation.title !== void 0) {\n const g = elem.append(\"g\").attr(\"class\", \"classLabel\");\n const label = g.append(\"text\").attr(\"class\", \"label\").attr(\"x\", x).attr(\"y\", y).attr(\"fill\", \"red\").attr(\"text-anchor\", \"middle\").text(relation.title);\n window.label = label;\n const bounds = label.node().getBBox();\n g.insert(\"rect\", \":first-child\").attr(\"class\", \"box\").attr(\"x\", bounds.x - conf.padding / 2).attr(\"y\", bounds.y - conf.padding / 2).attr(\"width\", bounds.width + conf.padding).attr(\"height\", bounds.height + conf.padding);\n }\n log.info(\"Rendering relation \" + JSON.stringify(relation));\n if (relation.relationTitle1 !== void 0 && relation.relationTitle1 !== \"none\") {\n const g = elem.append(\"g\").attr(\"class\", \"cardinality\");\n g.append(\"text\").attr(\"class\", \"type1\").attr(\"x\", p1_card_x).attr(\"y\", p1_card_y).attr(\"fill\", \"black\").attr(\"font-size\", \"6\").text(relation.relationTitle1);\n }\n if (relation.relationTitle2 !== void 0 && relation.relationTitle2 !== \"none\") {\n const g = elem.append(\"g\").attr(\"class\", \"cardinality\");\n g.append(\"text\").attr(\"class\", \"type2\").attr(\"x\", p2_card_x).attr(\"y\", p2_card_y).attr(\"fill\", \"black\").attr(\"font-size\", \"6\").text(relation.relationTitle2);\n }\n edgeCount++;\n};\nconst drawClass = function(elem, classDef, conf, diagObj) {\n log.debug(\"Rendering class \", classDef, conf);\n const id = classDef.id;\n const classInfo = {\n id,\n label: classDef.id,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", diagObj.db.lookUpDomId(id)).attr(\"class\", \"classGroup\");\n let title;\n if (classDef.link) {\n title = g.append(\"svg:a\").attr(\"xlink:href\", classDef.link).attr(\"target\", classDef.linkTarget).append(\"text\").attr(\"y\", conf.textHeight + conf.padding).attr(\"x\", 0);\n } else {\n title = g.append(\"text\").attr(\"y\", conf.textHeight + conf.padding).attr(\"x\", 0);\n }\n let isFirst = true;\n classDef.annotations.forEach(function(member) {\n const titleText2 = title.append(\"tspan\").text(\"\u00AB\" + member + \"\u00BB\");\n if (!isFirst) {\n titleText2.attr(\"dy\", conf.textHeight);\n }\n isFirst = false;\n });\n let classTitleString = getClassTitleString(classDef);\n const classTitle = title.append(\"tspan\").text(classTitleString).attr(\"class\", \"title\");\n if (!isFirst) {\n classTitle.attr(\"dy\", conf.textHeight);\n }\n const titleHeight = title.node().getBBox().height;\n let membersLine;\n let membersBox;\n let methodsLine;\n if (classDef.members.length > 0) {\n membersLine = g.append(\"line\").attr(\"x1\", 0).attr(\"y1\", conf.padding + titleHeight + conf.dividerMargin / 2).attr(\"y2\", conf.padding + titleHeight + conf.dividerMargin / 2);\n const members = g.append(\"text\").attr(\"x\", conf.padding).attr(\"y\", titleHeight + conf.dividerMargin + conf.textHeight).attr(\"fill\", \"white\").attr(\"class\", \"classText\");\n isFirst = true;\n classDef.members.forEach(function(member) {\n addTspan(members, member, isFirst, conf);\n isFirst = false;\n });\n membersBox = members.node().getBBox();\n }\n if (classDef.methods.length > 0) {\n methodsLine = g.append(\"line\").attr(\"x1\", 0).attr(\"y1\", conf.padding + titleHeight + conf.dividerMargin + membersBox.height).attr(\"y2\", conf.padding + titleHeight + conf.dividerMargin + membersBox.height);\n const methods = g.append(\"text\").attr(\"x\", conf.padding).attr(\"y\", titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight).attr(\"fill\", \"white\").attr(\"class\", \"classText\");\n isFirst = true;\n classDef.methods.forEach(function(method) {\n addTspan(methods, method, isFirst, conf);\n isFirst = false;\n });\n }\n const classBox = g.node().getBBox();\n var cssClassStr = \" \";\n if (classDef.cssClasses.length > 0) {\n cssClassStr = cssClassStr + classDef.cssClasses.join(\" \");\n }\n const rect = g.insert(\"rect\", \":first-child\").attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", classBox.width + 2 * conf.padding).attr(\"height\", classBox.height + conf.padding + 0.5 * conf.dividerMargin).attr(\"class\", cssClassStr);\n const rectWidth = rect.node().getBBox().width;\n title.node().childNodes.forEach(function(x) {\n x.setAttribute(\"x\", (rectWidth - x.getBBox().width) / 2);\n });\n if (classDef.tooltip) {\n title.insert(\"title\").text(classDef.tooltip);\n }\n if (membersLine) {\n membersLine.attr(\"x2\", rectWidth);\n }\n if (methodsLine) {\n methodsLine.attr(\"x2\", rectWidth);\n }\n classInfo.width = rectWidth;\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;\n return classInfo;\n};\nconst getClassTitleString = function(classDef) {\n let classTitleString = classDef.id;\n if (classDef.type) {\n classTitleString += \"<\" + parseGenericTypes(classDef.type) + \">\";\n }\n return classTitleString;\n};\nconst drawNote = function(elem, note, conf, diagObj) {\n log.debug(\"Rendering note \", note, conf);\n const id = note.id;\n const noteInfo = {\n id,\n text: note.text,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", id).attr(\"class\", \"classGroup\");\n let text = g.append(\"text\").attr(\"y\", conf.textHeight + conf.padding).attr(\"x\", 0);\n const lines = JSON.parse(`\"${note.text}\"`).split(\"\\n\");\n lines.forEach(function(line2) {\n log.debug(`Adding line: ${line2}`);\n text.append(\"tspan\").text(line2).attr(\"class\", \"title\").attr(\"dy\", conf.textHeight);\n });\n const noteBox = g.node().getBBox();\n const rect = g.insert(\"rect\", \":first-child\").attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", noteBox.width + 2 * conf.padding).attr(\n \"height\",\n noteBox.height + lines.length * conf.textHeight + conf.padding + 0.5 * conf.dividerMargin\n );\n const rectWidth = rect.node().getBBox().width;\n text.node().childNodes.forEach(function(x) {\n x.setAttribute(\"x\", (rectWidth - x.getBBox().width) / 2);\n });\n noteInfo.width = rectWidth;\n noteInfo.height = noteBox.height + lines.length * conf.textHeight + conf.padding + 0.5 * conf.dividerMargin;\n return noteInfo;\n};\nconst addTspan = function(textEl, member, isFirst, conf) {\n const { displayText, cssStyle } = member.getDisplayDetails();\n const tSpan = textEl.append(\"tspan\").attr(\"x\", conf.padding).text(displayText);\n if (cssStyle !== \"\") {\n tSpan.attr(\"style\", member.cssStyle);\n }\n if (!isFirst) {\n tSpan.attr(\"dy\", conf.textHeight);\n }\n};\nconst svgDraw = {\n getClassTitleString,\n drawClass,\n drawEdge,\n drawNote\n};\nlet idCache = {};\nconst padding = 20;\nconst getGraphId = function(label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n if (foundEntry) {\n return foundEntry[0];\n }\n};\nconst insertMarkers = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"extensionStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"extensionEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"compositionStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"compositionEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"aggregationStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"aggregationEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"dependencyStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"dependencyEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst draw = function(text, id, _version, diagObj) {\n const conf = getConfig().class;\n idCache = {};\n log.info(\"Rendering diagram \" + text);\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const diagram2 = root.select(`[id='${id}']`);\n insertMarkers(diagram2);\n const g = new graphlib.Graph({\n multigraph: true\n });\n g.setGraph({\n isMultiGraph: true\n });\n g.setDefaultEdgeLabel(function() {\n return {};\n });\n const classes = diagObj.db.getClasses();\n const keys = Object.keys(classes);\n for (const key of keys) {\n const classDef = classes[key];\n const node = svgDraw.drawClass(diagram2, classDef, conf, diagObj);\n idCache[node.id] = node;\n g.setNode(node.id, node);\n log.info(\"Org height: \" + node.height);\n }\n const relations = diagObj.db.getRelations();\n relations.forEach(function(relation) {\n log.info(\n \"tjoho\" + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\n );\n g.setEdge(\n getGraphId(relation.id1),\n getGraphId(relation.id2),\n {\n relation\n },\n relation.title || \"DEFAULT\"\n );\n });\n const notes = diagObj.db.getNotes();\n notes.forEach(function(note) {\n log.debug(`Adding note: ${JSON.stringify(note)}`);\n const node = svgDraw.drawNote(diagram2, note, conf, diagObj);\n idCache[node.id] = node;\n g.setNode(node.id, node);\n if (note.class && note.class in classes) {\n g.setEdge(\n note.id,\n getGraphId(note.class),\n {\n relation: {\n id1: note.id,\n id2: note.class,\n relation: {\n type1: \"none\",\n type2: \"none\",\n lineType: 10\n }\n }\n },\n \"DEFAULT\"\n );\n }\n });\n layout(g);\n g.nodes().forEach(function(v) {\n if (v !== void 0 && g.node(v) !== void 0) {\n log.debug(\"Node \" + v + \": \" + JSON.stringify(g.node(v)));\n root.select(\"#\" + (diagObj.db.lookUpDomId(v) || v)).attr(\n \"transform\",\n \"translate(\" + (g.node(v).x - g.node(v).width / 2) + \",\" + (g.node(v).y - g.node(v).height / 2) + \" )\"\n );\n }\n });\n g.edges().forEach(function(e) {\n if (e !== void 0 && g.edge(e) !== void 0) {\n log.debug(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(g.edge(e)));\n svgDraw.drawEdge(diagram2, g.edge(e), g.edge(e).relation, conf, diagObj);\n }\n });\n const svgBounds = diagram2.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n configureSvgSize(diagram2, height, width, conf.useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n log.debug(`viewBox ${vBox}`);\n diagram2.attr(\"viewBox\", vBox);\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n db.clear();\n }\n};\nexport {\n diagram\n};\n"], + "mappings": "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", + "names": ["import_dayjs", "import_sanitize_url", "import_dompurify", "edgeCount", "drawEdge", "elem", "path", "relation", "conf", "diagObj", "getRelationType", "type", "p", "lineData", "lineFunction", "line_default", "d", "basis_default", "svgPath", "url", "x", "y", "l", "labelPosition", "utils", "p1_card_x", "p1_card_y", "p2_card_x", "p2_card_y", "cardinality_1_point", "cardinality_2_point", "log$1", "g", "label", "bounds", "drawClass", "classDef", "id", "classInfo", "title", "isFirst", "member", "titleText2", "classTitleString", "getClassTitleString", "classTitle", "titleHeight", "membersLine", "membersBox", "methodsLine", "members", "addTspan", "methods", "method", "classBox", "cssClassStr", "rectWidth", "parseGenericTypes", "drawNote", "note", "noteInfo", "text", "lines", "line2", "noteBox", "textEl", "displayText", "cssStyle", "tSpan", "svgDraw", "idCache", "padding", "getGraphId", "foundEntry", "entry", "insertMarkers", "draw", "_version", "getConfig$1", "securityLevel", "sandboxElement", "select_default", "root", "diagram2", "Graph", "classes", "keys", "key", "node", "layout", "v", "svgBounds", "width", "height", "configureSvgSize", "vBox", "renderer", "diagram", "parser$1", "db", "styles", "cnf"] +} diff --git a/public/classDiagram-v2-3a55c922-LPBFVDSW.min.js b/public/classDiagram-v2-3a55c922-LPBFVDSW.min.js new file mode 100644 index 0000000..12c275b --- /dev/null +++ b/public/classDiagram-v2-3a55c922-LPBFVDSW.min.js @@ -0,0 +1,3 @@ +import{a as M,b as T,c as R}from"./chunk-RE5CTVCE.min.js";import{a as I}from"./chunk-FFBLGSWC.min.js";import"./chunk-YPWPK43L.min.js";import"./chunk-VKCMXAYQ.min.js";import{j as A}from"./chunk-LLUSN4ZV.min.js";import{$a as i,E as S,Fa as d,I as V,Ka as L,Pa as N,Qa as B,Ya as G,b as F,c as H,cb as z,h as g}from"./chunk-DJFTDYIK.min.js";import{d as k}from"./chunk-P42HNYSU.min.js";var ot=k(F(),1),lt=k(H(),1),nt=k(V(),1);var E=n=>L.sanitizeText(n,i()),D={dividerMargin:10,padding:5,textHeight:10,curve:void 0},W=function(n,e,y,s){let t=Object.keys(n);d.info("keys:",t),d.info(n),t.forEach(function(r){var o,c;let l=n[r],p={shape:"rect",id:l.id,domId:l.domId,labelText:E(l.id),labelStyle:"",style:"fill: none; stroke: black",padding:((o=i().flowchart)==null?void 0:o.padding)??((c=i().class)==null?void 0:c.padding)};e.setNode(l.id,p),$(l.classes,e,y,s,l.id),d.info("setNode",p)})},$=function(n,e,y,s,t){let r=Object.keys(n);d.info("keys:",r),d.info(n),r.filter(o=>n[o].parent==t).forEach(function(o){var c,l;let a=n[o],p=a.cssClasses.join(" "),f={labelStyle:"",style:""},h=a.label??a.id,b=0,m="class_box",u={labelStyle:f.labelStyle,shape:m,labelText:E(h),classData:a,rx:b,ry:b,class:p,style:f.style,id:a.id,domId:a.domId,tooltip:s.db.getTooltip(a.id,t)||"",haveCallback:a.haveCallback,link:a.link,width:a.type==="group"?500:void 0,type:a.type,padding:((c=i().flowchart)==null?void 0:c.padding)??((l=i().class)==null?void 0:l.padding)};e.setNode(a.id,u),t&&e.setParent(a.id,t),d.info("setNode",u)})},J=function(n,e,y,s){d.info(n),n.forEach(function(t,r){var o,c;let l=t,a="",p={labelStyle:"",style:""},f=l.text,h=0,b="note",m={labelStyle:p.labelStyle,shape:b,labelText:E(f),noteData:l,rx:h,ry:h,class:a,style:p.style,id:l.id,domId:l.id,tooltip:"",type:"note",padding:((o=i().flowchart)==null?void 0:o.padding)??((c=i().class)==null?void 0:c.padding)};if(e.setNode(l.id,m),d.info("setNode",m),!l.class||!(l.class in s))return;let u=y+r,x={id:`edgeNote${u}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:N(D.curve,S)};e.setEdge(l.id,l.class,x,u)})},K=function(n,e){let y=i().flowchart,s=0;n.forEach(function(t){var r;s++;let o={classes:"relation",pattern:t.relation.lineType==1?"dashed":"solid",id:"id"+s,arrowhead:t.type==="arrow_open"?"none":"normal",startLabelRight:t.relationTitle1==="none"?"":t.relationTitle1,endLabelLeft:t.relationTitle2==="none"?"":t.relationTitle2,arrowTypeStart:P(t.relation.type1),arrowTypeEnd:P(t.relation.type2),style:"fill:none",labelStyle:"",curve:N(y?.curve,S)};if(d.info(o,t),t.style!==void 0){let c=B(t.style);o.style=c.style,o.labelStyle=c.labelStyle}t.text=t.title,t.text===void 0?t.style!==void 0&&(o.arrowheadStyle="fill: #333"):(o.arrowheadStyle="fill: #333",o.labelpos="c",((r=i().flowchart)==null?void 0:r.htmlLabels)??i().htmlLabels?(o.labelType="html",o.label=''+t.text+""):(o.labelType="text",o.label=t.text.replace(L.lineBreakRegex,` +`),t.style===void 0&&(o.style=o.style||"stroke: #333; stroke-width: 1.5px;fill:none"),o.labelStyle=o.labelStyle.replace("color:","fill:"))),e.setEdge(t.id1,t.id2,o,s)})},Q=function(n){D={...D,...n}},U=async function(n,e,y,s){d.info("Drawing class - ",e);let t=i().flowchart??i().class,r=i().securityLevel;d.info("config:",t);let o=t?.nodeSpacing??50,c=t?.rankSpacing??50,l=new A({multigraph:!0,compound:!0}).setGraph({rankdir:s.db.getDirection(),nodesep:o,ranksep:c,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),a=s.db.getNamespaces(),p=s.db.getClasses(),f=s.db.getRelations(),h=s.db.getNotes();d.info(f),W(a,l,e,s),$(p,l,e,s),K(f,l),J(h,l,f.length+1,p);let b;r==="sandbox"&&(b=g("#i"+e));let m=r==="sandbox"?g(b.nodes()[0].contentDocument.body):g("body"),u=m.select(`[id="${e}"]`),x=m.select("#"+e+" g");if(await I(x,l,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",e),G.insertTitle(u,"classTitleText",t?.titleTopMargin??5,s.db.getDiagramTitle()),z(l,u,t?.diagramPadding,t?.useMaxWidth),!t?.htmlLabels){let _=r==="sandbox"?b.nodes()[0].contentDocument:document,q=_.querySelectorAll('[id="'+e+'"] .edgeLabel .label');for(let w of q){let C=w.getBBox(),v=_.createElementNS("http://www.w3.org/2000/svg","rect");v.setAttribute("rx",0),v.setAttribute("ry",0),v.setAttribute("width",C.width),v.setAttribute("height",C.height),w.insertBefore(v,w.firstChild)}}};function P(n){let e;switch(n){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}var X={setConf:Q,draw:U},it={parser:M,db:T,renderer:X,styles:R,init:n=>{n.class||(n.class={}),n.class.arrowMarkerAbsolute=n.arrowMarkerAbsolute,T.clear()}};export{it as diagram}; +//# sourceMappingURL=classDiagram-v2-3a55c922-LPBFVDSW.min.js.map diff --git a/public/classDiagram-v2-3a55c922-LPBFVDSW.min.js.map b/public/classDiagram-v2-3a55c922-LPBFVDSW.min.js.map new file mode 100644 index 0000000..86c9aff --- /dev/null +++ b/public/classDiagram-v2-3a55c922-LPBFVDSW.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/mermaid/dist/classDiagram-v2-3a55c922.js"], + "sourcesContent": ["import { p as parser, d as db, s as styles } from \"./styles-c47180b5.js\";\nimport { select, curveLinear } from \"d3\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { l as log, c as getConfig, u as utils, o as setupGraphViewbox, n as interpolateToCurve, k as getStylesFromArray, e as common } from \"./mermaid-485fd1a4.js\";\nimport { r as render } from \"./index-b0b3af87.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-bc33a094.js\";\nimport \"./createText-b3507a77.js\";\nimport \"mdast-util-from-markdown\";\nconst sanitizeText = (txt) => common.sanitizeText(txt, getConfig());\nlet conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n curve: void 0\n};\nconst addNamespaces = function(namespaces, g, _id, diagObj) {\n const keys = Object.keys(namespaces);\n log.info(\"keys:\", keys);\n log.info(namespaces);\n keys.forEach(function(id) {\n var _a, _b;\n const vertex = namespaces[id];\n const shape = \"rect\";\n const node = {\n shape,\n id: vertex.id,\n domId: vertex.domId,\n labelText: sanitizeText(vertex.id),\n labelStyle: \"\",\n style: \"fill: none; stroke: black\",\n // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)\n };\n g.setNode(vertex.id, node);\n addClasses(vertex.classes, g, _id, diagObj, vertex.id);\n log.info(\"setNode\", node);\n });\n};\nconst addClasses = function(classes, g, _id, diagObj, parent) {\n const keys = Object.keys(classes);\n log.info(\"keys:\", keys);\n log.info(classes);\n keys.filter((id) => classes[id].parent == parent).forEach(function(id) {\n var _a, _b;\n const vertex = classes[id];\n const cssClassStr = vertex.cssClasses.join(\" \");\n const styles2 = { labelStyle: \"\", style: \"\" };\n const vertexText = vertex.label ?? vertex.id;\n const radius = 0;\n const shape = \"class_box\";\n const node = {\n labelStyle: styles2.labelStyle,\n shape,\n labelText: sanitizeText(vertexText),\n classData: vertex,\n rx: radius,\n ry: radius,\n class: cssClassStr,\n style: styles2.style,\n id: vertex.id,\n domId: vertex.domId,\n tooltip: diagObj.db.getTooltip(vertex.id, parent) || \"\",\n haveCallback: vertex.haveCallback,\n link: vertex.link,\n width: vertex.type === \"group\" ? 500 : void 0,\n type: vertex.type,\n // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)\n };\n g.setNode(vertex.id, node);\n if (parent) {\n g.setParent(vertex.id, parent);\n }\n log.info(\"setNode\", node);\n });\n};\nconst addNotes = function(notes, g, startEdgeId, classes) {\n log.info(notes);\n notes.forEach(function(note, i) {\n var _a, _b;\n const vertex = note;\n const cssNoteStr = \"\";\n const styles2 = { labelStyle: \"\", style: \"\" };\n const vertexText = vertex.text;\n const radius = 0;\n const shape = \"note\";\n const node = {\n labelStyle: styles2.labelStyle,\n shape,\n labelText: sanitizeText(vertexText),\n noteData: vertex,\n rx: radius,\n ry: radius,\n class: cssNoteStr,\n style: styles2.style,\n id: vertex.id,\n domId: vertex.id,\n tooltip: \"\",\n type: \"note\",\n // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)\n };\n g.setNode(vertex.id, node);\n log.info(\"setNode\", node);\n if (!vertex.class || !(vertex.class in classes)) {\n return;\n }\n const edgeId = startEdgeId + i;\n const edgeData = {\n id: `edgeNote${edgeId}`,\n //Set relationship style and line type\n classes: \"relation\",\n pattern: \"dotted\",\n // Set link type for rendering\n arrowhead: \"none\",\n //Set edge extra labels\n startLabelRight: \"\",\n endLabelLeft: \"\",\n //Set relation arrow types\n arrowTypeStart: \"none\",\n arrowTypeEnd: \"none\",\n style: \"fill:none\",\n labelStyle: \"\",\n curve: interpolateToCurve(conf.curve, curveLinear)\n };\n g.setEdge(vertex.id, vertex.class, edgeData, edgeId);\n });\n};\nconst addRelations = function(relations, g) {\n const conf2 = getConfig().flowchart;\n let cnt = 0;\n relations.forEach(function(edge) {\n var _a;\n cnt++;\n const edgeData = {\n //Set relationship style and line type\n classes: \"relation\",\n pattern: edge.relation.lineType == 1 ? \"dashed\" : \"solid\",\n id: \"id\" + cnt,\n // Set link type for rendering\n arrowhead: edge.type === \"arrow_open\" ? \"none\" : \"normal\",\n //Set edge extra labels\n startLabelRight: edge.relationTitle1 === \"none\" ? \"\" : edge.relationTitle1,\n endLabelLeft: edge.relationTitle2 === \"none\" ? \"\" : edge.relationTitle2,\n //Set relation arrow types\n arrowTypeStart: getArrowMarker(edge.relation.type1),\n arrowTypeEnd: getArrowMarker(edge.relation.type2),\n style: \"fill:none\",\n labelStyle: \"\",\n curve: interpolateToCurve(conf2 == null ? void 0 : conf2.curve, curveLinear)\n };\n log.info(edgeData, edge);\n if (edge.style !== void 0) {\n const styles2 = getStylesFromArray(edge.style);\n edgeData.style = styles2.style;\n edgeData.labelStyle = styles2.labelStyle;\n }\n edge.text = edge.title;\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n if (((_a = getConfig().flowchart) == null ? void 0 : _a.htmlLabels) ?? getConfig().htmlLabels) {\n edgeData.labelType = \"html\";\n edgeData.label = '' + edge.text + \"\";\n } else {\n edgeData.labelType = \"text\";\n edgeData.label = edge.text.replace(common.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n }\n }\n g.setEdge(edge.id1, edge.id2, edgeData, cnt);\n });\n};\nconst setConf = function(cnf) {\n conf = {\n ...conf,\n ...cnf\n };\n};\nconst draw = async function(text, id, _version, diagObj) {\n log.info(\"Drawing class - \", id);\n const conf2 = getConfig().flowchart ?? getConfig().class;\n const securityLevel = getConfig().securityLevel;\n log.info(\"config:\", conf2);\n const nodeSpacing = (conf2 == null ? void 0 : conf2.nodeSpacing) ?? 50;\n const rankSpacing = (conf2 == null ? void 0 : conf2.rankSpacing) ?? 50;\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: diagObj.db.getDirection(),\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n const namespaces = diagObj.db.getNamespaces();\n const classes = diagObj.db.getClasses();\n const relations = diagObj.db.getRelations();\n const notes = diagObj.db.getNotes();\n log.info(relations);\n addNamespaces(namespaces, g, id, diagObj);\n addClasses(classes, g, id, diagObj);\n addRelations(relations, g);\n addNotes(notes, g, relations.length + 1, classes);\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n await render(\n element,\n g,\n [\"aggregation\", \"extension\", \"composition\", \"dependency\", \"lollipop\"],\n \"classDiagram\",\n id\n );\n utils.insertTitle(svg, \"classTitleText\", (conf2 == null ? void 0 : conf2.titleTopMargin) ?? 5, diagObj.db.getDiagramTitle());\n setupGraphViewbox(g, svg, conf2 == null ? void 0 : conf2.diagramPadding, conf2 == null ? void 0 : conf2.useMaxWidth);\n if (!(conf2 == null ? void 0 : conf2.htmlLabels)) {\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n }\n};\nfunction getArrowMarker(type) {\n let marker;\n switch (type) {\n case 0:\n marker = \"aggregation\";\n break;\n case 1:\n marker = \"extension\";\n break;\n case 2:\n marker = \"composition\";\n break;\n case 3:\n marker = \"dependency\";\n break;\n case 4:\n marker = \"lollipop\";\n break;\n default:\n marker = \"none\";\n }\n return marker;\n}\nconst renderer = {\n setConf,\n draw\n};\nconst diagram = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n db.clear();\n }\n};\nexport {\n diagram\n};\n"], + "mappings": "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", + "names": ["import_dayjs", "import_sanitize_url", "import_dompurify", "sanitizeText", "txt", "common$1", "getConfig$1", "conf", "addNamespaces", "namespaces", "g", "_id", "diagObj", "keys", "log$1", "id", "_a", "_b", "vertex", "node", "addClasses", "classes", "parent", "cssClassStr", "styles2", "vertexText", "radius", "shape", "addNotes", "notes", "startEdgeId", "note", "i", "cssNoteStr", "edgeId", "edgeData", "interpolateToCurve", "linear_default", "addRelations", "relations", "conf2", "cnt", "edge", "getArrowMarker", "getStylesFromArray", "setConf", "cnf", "draw", "text", "_version", "securityLevel", "nodeSpacing", "rankSpacing", "Graph", "sandboxElement", "select_default", "root", "svg", "element", "render", "utils", "setupGraphViewbox$1", "doc", "labels", "label", "dim", "rect", "type", "marker", "renderer", "diagram", "parser$1", "db", "styles"] +} diff --git a/public/docfx.min.css b/public/docfx.min.css new file mode 100644 index 0000000..c6de0a3 --- /dev/null +++ b/public/docfx.min.css @@ -0,0 +1,16 @@ +@charset "UTF-8";@font-face{font-display:block;font-family:bootstrap-icons;src:url("./bootstrap-icons-6QOYJHKE.woff2?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff2"),url("./bootstrap-icons-JHE3QUSN.woff?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff")}.bi:before,[class^=bi-]:before,[class*=" bi-"]:before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-123:before{content:"\f67f"}.bi-alarm-fill:before{content:"\f101"}.bi-alarm:before{content:"\f102"}.bi-align-bottom:before{content:"\f103"}.bi-align-center:before{content:"\f104"}.bi-align-end:before{content:"\f105"}.bi-align-middle:before{content:"\f106"}.bi-align-start:before{content:"\f107"}.bi-align-top:before{content:"\f108"}.bi-alt:before{content:"\f109"}.bi-app-indicator:before{content:"\f10a"}.bi-app:before{content:"\f10b"}.bi-archive-fill:before{content:"\f10c"}.bi-archive:before{content:"\f10d"}.bi-arrow-90deg-down:before{content:"\f10e"}.bi-arrow-90deg-left:before{content:"\f10f"}.bi-arrow-90deg-right:before{content:"\f110"}.bi-arrow-90deg-up:before{content:"\f111"}.bi-arrow-bar-down:before{content:"\f112"}.bi-arrow-bar-left:before{content:"\f113"}.bi-arrow-bar-right:before{content:"\f114"}.bi-arrow-bar-up:before{content:"\f115"}.bi-arrow-clockwise:before{content:"\f116"}.bi-arrow-counterclockwise:before{content:"\f117"}.bi-arrow-down-circle-fill:before{content:"\f118"}.bi-arrow-down-circle:before{content:"\f119"}.bi-arrow-down-left-circle-fill:before{content:"\f11a"}.bi-arrow-down-left-circle:before{content:"\f11b"}.bi-arrow-down-left-square-fill:before{content:"\f11c"}.bi-arrow-down-left-square:before{content:"\f11d"}.bi-arrow-down-left:before{content:"\f11e"}.bi-arrow-down-right-circle-fill:before{content:"\f11f"}.bi-arrow-down-right-circle:before{content:"\f120"}.bi-arrow-down-right-square-fill:before{content:"\f121"}.bi-arrow-down-right-square:before{content:"\f122"}.bi-arrow-down-right:before{content:"\f123"}.bi-arrow-down-short:before{content:"\f124"}.bi-arrow-down-square-fill:before{content:"\f125"}.bi-arrow-down-square:before{content:"\f126"}.bi-arrow-down-up:before{content:"\f127"}.bi-arrow-down:before{content:"\f128"}.bi-arrow-left-circle-fill:before{content:"\f129"}.bi-arrow-left-circle:before{content:"\f12a"}.bi-arrow-left-right:before{content:"\f12b"}.bi-arrow-left-short:before{content:"\f12c"}.bi-arrow-left-square-fill:before{content:"\f12d"}.bi-arrow-left-square:before{content:"\f12e"}.bi-arrow-left:before{content:"\f12f"}.bi-arrow-repeat:before{content:"\f130"}.bi-arrow-return-left:before{content:"\f131"}.bi-arrow-return-right:before{content:"\f132"}.bi-arrow-right-circle-fill:before{content:"\f133"}.bi-arrow-right-circle:before{content:"\f134"}.bi-arrow-right-short:before{content:"\f135"}.bi-arrow-right-square-fill:before{content:"\f136"}.bi-arrow-right-square:before{content:"\f137"}.bi-arrow-right:before{content:"\f138"}.bi-arrow-up-circle-fill:before{content:"\f139"}.bi-arrow-up-circle:before{content:"\f13a"}.bi-arrow-up-left-circle-fill:before{content:"\f13b"}.bi-arrow-up-left-circle:before{content:"\f13c"}.bi-arrow-up-left-square-fill:before{content:"\f13d"}.bi-arrow-up-left-square:before{content:"\f13e"}.bi-arrow-up-left:before{content:"\f13f"}.bi-arrow-up-right-circle-fill:before{content:"\f140"}.bi-arrow-up-right-circle:before{content:"\f141"}.bi-arrow-up-right-square-fill:before{content:"\f142"}.bi-arrow-up-right-square:before{content:"\f143"}.bi-arrow-up-right:before{content:"\f144"}.bi-arrow-up-short:before{content:"\f145"}.bi-arrow-up-square-fill:before{content:"\f146"}.bi-arrow-up-square:before{content:"\f147"}.bi-arrow-up:before{content:"\f148"}.bi-arrows-angle-contract:before{content:"\f149"}.bi-arrows-angle-expand:before{content:"\f14a"}.bi-arrows-collapse:before{content:"\f14b"}.bi-arrows-expand:before{content:"\f14c"}.bi-arrows-fullscreen:before{content:"\f14d"}.bi-arrows-move:before{content:"\f14e"}.bi-aspect-ratio-fill:before{content:"\f14f"}.bi-aspect-ratio:before{content:"\f150"}.bi-asterisk:before{content:"\f151"}.bi-at:before{content:"\f152"}.bi-award-fill:before{content:"\f153"}.bi-award:before{content:"\f154"}.bi-back:before{content:"\f155"}.bi-backspace-fill:before{content:"\f156"}.bi-backspace-reverse-fill:before{content:"\f157"}.bi-backspace-reverse:before{content:"\f158"}.bi-backspace:before{content:"\f159"}.bi-badge-3d-fill:before{content:"\f15a"}.bi-badge-3d:before{content:"\f15b"}.bi-badge-4k-fill:before{content:"\f15c"}.bi-badge-4k:before{content:"\f15d"}.bi-badge-8k-fill:before{content:"\f15e"}.bi-badge-8k:before{content:"\f15f"}.bi-badge-ad-fill:before{content:"\f160"}.bi-badge-ad:before{content:"\f161"}.bi-badge-ar-fill:before{content:"\f162"}.bi-badge-ar:before{content:"\f163"}.bi-badge-cc-fill:before{content:"\f164"}.bi-badge-cc:before{content:"\f165"}.bi-badge-hd-fill:before{content:"\f166"}.bi-badge-hd:before{content:"\f167"}.bi-badge-tm-fill:before{content:"\f168"}.bi-badge-tm:before{content:"\f169"}.bi-badge-vo-fill:before{content:"\f16a"}.bi-badge-vo:before{content:"\f16b"}.bi-badge-vr-fill:before{content:"\f16c"}.bi-badge-vr:before{content:"\f16d"}.bi-badge-wc-fill:before{content:"\f16e"}.bi-badge-wc:before{content:"\f16f"}.bi-bag-check-fill:before{content:"\f170"}.bi-bag-check:before{content:"\f171"}.bi-bag-dash-fill:before{content:"\f172"}.bi-bag-dash:before{content:"\f173"}.bi-bag-fill:before{content:"\f174"}.bi-bag-plus-fill:before{content:"\f175"}.bi-bag-plus:before{content:"\f176"}.bi-bag-x-fill:before{content:"\f177"}.bi-bag-x:before{content:"\f178"}.bi-bag:before{content:"\f179"}.bi-bar-chart-fill:before{content:"\f17a"}.bi-bar-chart-line-fill:before{content:"\f17b"}.bi-bar-chart-line:before{content:"\f17c"}.bi-bar-chart-steps:before{content:"\f17d"}.bi-bar-chart:before{content:"\f17e"}.bi-basket-fill:before{content:"\f17f"}.bi-basket:before{content:"\f180"}.bi-basket2-fill:before{content:"\f181"}.bi-basket2:before{content:"\f182"}.bi-basket3-fill:before{content:"\f183"}.bi-basket3:before{content:"\f184"}.bi-battery-charging:before{content:"\f185"}.bi-battery-full:before{content:"\f186"}.bi-battery-half:before{content:"\f187"}.bi-battery:before{content:"\f188"}.bi-bell-fill:before{content:"\f189"}.bi-bell:before{content:"\f18a"}.bi-bezier:before{content:"\f18b"}.bi-bezier2:before{content:"\f18c"}.bi-bicycle:before{content:"\f18d"}.bi-binoculars-fill:before{content:"\f18e"}.bi-binoculars:before{content:"\f18f"}.bi-blockquote-left:before{content:"\f190"}.bi-blockquote-right:before{content:"\f191"}.bi-book-fill:before{content:"\f192"}.bi-book-half:before{content:"\f193"}.bi-book:before{content:"\f194"}.bi-bookmark-check-fill:before{content:"\f195"}.bi-bookmark-check:before{content:"\f196"}.bi-bookmark-dash-fill:before{content:"\f197"}.bi-bookmark-dash:before{content:"\f198"}.bi-bookmark-fill:before{content:"\f199"}.bi-bookmark-heart-fill:before{content:"\f19a"}.bi-bookmark-heart:before{content:"\f19b"}.bi-bookmark-plus-fill:before{content:"\f19c"}.bi-bookmark-plus:before{content:"\f19d"}.bi-bookmark-star-fill:before{content:"\f19e"}.bi-bookmark-star:before{content:"\f19f"}.bi-bookmark-x-fill:before{content:"\f1a0"}.bi-bookmark-x:before{content:"\f1a1"}.bi-bookmark:before{content:"\f1a2"}.bi-bookmarks-fill:before{content:"\f1a3"}.bi-bookmarks:before{content:"\f1a4"}.bi-bookshelf:before{content:"\f1a5"}.bi-bootstrap-fill:before{content:"\f1a6"}.bi-bootstrap-reboot:before{content:"\f1a7"}.bi-bootstrap:before{content:"\f1a8"}.bi-border-all:before{content:"\f1a9"}.bi-border-bottom:before{content:"\f1aa"}.bi-border-center:before{content:"\f1ab"}.bi-border-inner:before{content:"\f1ac"}.bi-border-left:before{content:"\f1ad"}.bi-border-middle:before{content:"\f1ae"}.bi-border-outer:before{content:"\f1af"}.bi-border-right:before{content:"\f1b0"}.bi-border-style:before{content:"\f1b1"}.bi-border-top:before{content:"\f1b2"}.bi-border-width:before{content:"\f1b3"}.bi-border:before{content:"\f1b4"}.bi-bounding-box-circles:before{content:"\f1b5"}.bi-bounding-box:before{content:"\f1b6"}.bi-box-arrow-down-left:before{content:"\f1b7"}.bi-box-arrow-down-right:before{content:"\f1b8"}.bi-box-arrow-down:before{content:"\f1b9"}.bi-box-arrow-in-down-left:before{content:"\f1ba"}.bi-box-arrow-in-down-right:before{content:"\f1bb"}.bi-box-arrow-in-down:before{content:"\f1bc"}.bi-box-arrow-in-left:before{content:"\f1bd"}.bi-box-arrow-in-right:before{content:"\f1be"}.bi-box-arrow-in-up-left:before{content:"\f1bf"}.bi-box-arrow-in-up-right:before{content:"\f1c0"}.bi-box-arrow-in-up:before{content:"\f1c1"}.bi-box-arrow-left:before{content:"\f1c2"}.bi-box-arrow-right:before{content:"\f1c3"}.bi-box-arrow-up-left:before{content:"\f1c4"}.bi-box-arrow-up-right:before{content:"\f1c5"}.bi-box-arrow-up:before{content:"\f1c6"}.bi-box-seam:before{content:"\f1c7"}.bi-box:before{content:"\f1c8"}.bi-braces:before{content:"\f1c9"}.bi-bricks:before{content:"\f1ca"}.bi-briefcase-fill:before{content:"\f1cb"}.bi-briefcase:before{content:"\f1cc"}.bi-brightness-alt-high-fill:before{content:"\f1cd"}.bi-brightness-alt-high:before{content:"\f1ce"}.bi-brightness-alt-low-fill:before{content:"\f1cf"}.bi-brightness-alt-low:before{content:"\f1d0"}.bi-brightness-high-fill:before{content:"\f1d1"}.bi-brightness-high:before{content:"\f1d2"}.bi-brightness-low-fill:before{content:"\f1d3"}.bi-brightness-low:before{content:"\f1d4"}.bi-broadcast-pin:before{content:"\f1d5"}.bi-broadcast:before{content:"\f1d6"}.bi-brush-fill:before{content:"\f1d7"}.bi-brush:before{content:"\f1d8"}.bi-bucket-fill:before{content:"\f1d9"}.bi-bucket:before{content:"\f1da"}.bi-bug-fill:before{content:"\f1db"}.bi-bug:before{content:"\f1dc"}.bi-building:before{content:"\f1dd"}.bi-bullseye:before{content:"\f1de"}.bi-calculator-fill:before{content:"\f1df"}.bi-calculator:before{content:"\f1e0"}.bi-calendar-check-fill:before{content:"\f1e1"}.bi-calendar-check:before{content:"\f1e2"}.bi-calendar-date-fill:before{content:"\f1e3"}.bi-calendar-date:before{content:"\f1e4"}.bi-calendar-day-fill:before{content:"\f1e5"}.bi-calendar-day:before{content:"\f1e6"}.bi-calendar-event-fill:before{content:"\f1e7"}.bi-calendar-event:before{content:"\f1e8"}.bi-calendar-fill:before{content:"\f1e9"}.bi-calendar-minus-fill:before{content:"\f1ea"}.bi-calendar-minus:before{content:"\f1eb"}.bi-calendar-month-fill:before{content:"\f1ec"}.bi-calendar-month:before{content:"\f1ed"}.bi-calendar-plus-fill:before{content:"\f1ee"}.bi-calendar-plus:before{content:"\f1ef"}.bi-calendar-range-fill:before{content:"\f1f0"}.bi-calendar-range:before{content:"\f1f1"}.bi-calendar-week-fill:before{content:"\f1f2"}.bi-calendar-week:before{content:"\f1f3"}.bi-calendar-x-fill:before{content:"\f1f4"}.bi-calendar-x:before{content:"\f1f5"}.bi-calendar:before{content:"\f1f6"}.bi-calendar2-check-fill:before{content:"\f1f7"}.bi-calendar2-check:before{content:"\f1f8"}.bi-calendar2-date-fill:before{content:"\f1f9"}.bi-calendar2-date:before{content:"\f1fa"}.bi-calendar2-day-fill:before{content:"\f1fb"}.bi-calendar2-day:before{content:"\f1fc"}.bi-calendar2-event-fill:before{content:"\f1fd"}.bi-calendar2-event:before{content:"\f1fe"}.bi-calendar2-fill:before{content:"\f1ff"}.bi-calendar2-minus-fill:before{content:"\f200"}.bi-calendar2-minus:before{content:"\f201"}.bi-calendar2-month-fill:before{content:"\f202"}.bi-calendar2-month:before{content:"\f203"}.bi-calendar2-plus-fill:before{content:"\f204"}.bi-calendar2-plus:before{content:"\f205"}.bi-calendar2-range-fill:before{content:"\f206"}.bi-calendar2-range:before{content:"\f207"}.bi-calendar2-week-fill:before{content:"\f208"}.bi-calendar2-week:before{content:"\f209"}.bi-calendar2-x-fill:before{content:"\f20a"}.bi-calendar2-x:before{content:"\f20b"}.bi-calendar2:before{content:"\f20c"}.bi-calendar3-event-fill:before{content:"\f20d"}.bi-calendar3-event:before{content:"\f20e"}.bi-calendar3-fill:before{content:"\f20f"}.bi-calendar3-range-fill:before{content:"\f210"}.bi-calendar3-range:before{content:"\f211"}.bi-calendar3-week-fill:before{content:"\f212"}.bi-calendar3-week:before{content:"\f213"}.bi-calendar3:before{content:"\f214"}.bi-calendar4-event:before{content:"\f215"}.bi-calendar4-range:before{content:"\f216"}.bi-calendar4-week:before{content:"\f217"}.bi-calendar4:before{content:"\f218"}.bi-camera-fill:before{content:"\f219"}.bi-camera-reels-fill:before{content:"\f21a"}.bi-camera-reels:before{content:"\f21b"}.bi-camera-video-fill:before{content:"\f21c"}.bi-camera-video-off-fill:before{content:"\f21d"}.bi-camera-video-off:before{content:"\f21e"}.bi-camera-video:before{content:"\f21f"}.bi-camera:before{content:"\f220"}.bi-camera2:before{content:"\f221"}.bi-capslock-fill:before{content:"\f222"}.bi-capslock:before{content:"\f223"}.bi-card-checklist:before{content:"\f224"}.bi-card-heading:before{content:"\f225"}.bi-card-image:before{content:"\f226"}.bi-card-list:before{content:"\f227"}.bi-card-text:before{content:"\f228"}.bi-caret-down-fill:before{content:"\f229"}.bi-caret-down-square-fill:before{content:"\f22a"}.bi-caret-down-square:before{content:"\f22b"}.bi-caret-down:before{content:"\f22c"}.bi-caret-left-fill:before{content:"\f22d"}.bi-caret-left-square-fill:before{content:"\f22e"}.bi-caret-left-square:before{content:"\f22f"}.bi-caret-left:before{content:"\f230"}.bi-caret-right-fill:before{content:"\f231"}.bi-caret-right-square-fill:before{content:"\f232"}.bi-caret-right-square:before{content:"\f233"}.bi-caret-right:before{content:"\f234"}.bi-caret-up-fill:before{content:"\f235"}.bi-caret-up-square-fill:before{content:"\f236"}.bi-caret-up-square:before{content:"\f237"}.bi-caret-up:before{content:"\f238"}.bi-cart-check-fill:before{content:"\f239"}.bi-cart-check:before{content:"\f23a"}.bi-cart-dash-fill:before{content:"\f23b"}.bi-cart-dash:before{content:"\f23c"}.bi-cart-fill:before{content:"\f23d"}.bi-cart-plus-fill:before{content:"\f23e"}.bi-cart-plus:before{content:"\f23f"}.bi-cart-x-fill:before{content:"\f240"}.bi-cart-x:before{content:"\f241"}.bi-cart:before{content:"\f242"}.bi-cart2:before{content:"\f243"}.bi-cart3:before{content:"\f244"}.bi-cart4:before{content:"\f245"}.bi-cash-stack:before{content:"\f246"}.bi-cash:before{content:"\f247"}.bi-cast:before{content:"\f248"}.bi-chat-dots-fill:before{content:"\f249"}.bi-chat-dots:before{content:"\f24a"}.bi-chat-fill:before{content:"\f24b"}.bi-chat-left-dots-fill:before{content:"\f24c"}.bi-chat-left-dots:before{content:"\f24d"}.bi-chat-left-fill:before{content:"\f24e"}.bi-chat-left-quote-fill:before{content:"\f24f"}.bi-chat-left-quote:before{content:"\f250"}.bi-chat-left-text-fill:before{content:"\f251"}.bi-chat-left-text:before{content:"\f252"}.bi-chat-left:before{content:"\f253"}.bi-chat-quote-fill:before{content:"\f254"}.bi-chat-quote:before{content:"\f255"}.bi-chat-right-dots-fill:before{content:"\f256"}.bi-chat-right-dots:before{content:"\f257"}.bi-chat-right-fill:before{content:"\f258"}.bi-chat-right-quote-fill:before{content:"\f259"}.bi-chat-right-quote:before{content:"\f25a"}.bi-chat-right-text-fill:before{content:"\f25b"}.bi-chat-right-text:before{content:"\f25c"}.bi-chat-right:before{content:"\f25d"}.bi-chat-square-dots-fill:before{content:"\f25e"}.bi-chat-square-dots:before{content:"\f25f"}.bi-chat-square-fill:before{content:"\f260"}.bi-chat-square-quote-fill:before{content:"\f261"}.bi-chat-square-quote:before{content:"\f262"}.bi-chat-square-text-fill:before{content:"\f263"}.bi-chat-square-text:before{content:"\f264"}.bi-chat-square:before{content:"\f265"}.bi-chat-text-fill:before{content:"\f266"}.bi-chat-text:before{content:"\f267"}.bi-chat:before{content:"\f268"}.bi-check-all:before{content:"\f269"}.bi-check-circle-fill:before{content:"\f26a"}.bi-check-circle:before{content:"\f26b"}.bi-check-square-fill:before{content:"\f26c"}.bi-check-square:before{content:"\f26d"}.bi-check:before{content:"\f26e"}.bi-check2-all:before{content:"\f26f"}.bi-check2-circle:before{content:"\f270"}.bi-check2-square:before{content:"\f271"}.bi-check2:before{content:"\f272"}.bi-chevron-bar-contract:before{content:"\f273"}.bi-chevron-bar-down:before{content:"\f274"}.bi-chevron-bar-expand:before{content:"\f275"}.bi-chevron-bar-left:before{content:"\f276"}.bi-chevron-bar-right:before{content:"\f277"}.bi-chevron-bar-up:before{content:"\f278"}.bi-chevron-compact-down:before{content:"\f279"}.bi-chevron-compact-left:before{content:"\f27a"}.bi-chevron-compact-right:before{content:"\f27b"}.bi-chevron-compact-up:before{content:"\f27c"}.bi-chevron-contract:before{content:"\f27d"}.bi-chevron-double-down:before{content:"\f27e"}.bi-chevron-double-left:before{content:"\f27f"}.bi-chevron-double-right:before{content:"\f280"}.bi-chevron-double-up:before{content:"\f281"}.bi-chevron-down:before{content:"\f282"}.bi-chevron-expand:before{content:"\f283"}.bi-chevron-left:before{content:"\f284"}.bi-chevron-right:before{content:"\f285"}.bi-chevron-up:before{content:"\f286"}.bi-circle-fill:before{content:"\f287"}.bi-circle-half:before{content:"\f288"}.bi-circle-square:before{content:"\f289"}.bi-circle:before{content:"\f28a"}.bi-clipboard-check:before{content:"\f28b"}.bi-clipboard-data:before{content:"\f28c"}.bi-clipboard-minus:before{content:"\f28d"}.bi-clipboard-plus:before{content:"\f28e"}.bi-clipboard-x:before{content:"\f28f"}.bi-clipboard:before{content:"\f290"}.bi-clock-fill:before{content:"\f291"}.bi-clock-history:before{content:"\f292"}.bi-clock:before{content:"\f293"}.bi-cloud-arrow-down-fill:before{content:"\f294"}.bi-cloud-arrow-down:before{content:"\f295"}.bi-cloud-arrow-up-fill:before{content:"\f296"}.bi-cloud-arrow-up:before{content:"\f297"}.bi-cloud-check-fill:before{content:"\f298"}.bi-cloud-check:before{content:"\f299"}.bi-cloud-download-fill:before{content:"\f29a"}.bi-cloud-download:before{content:"\f29b"}.bi-cloud-drizzle-fill:before{content:"\f29c"}.bi-cloud-drizzle:before{content:"\f29d"}.bi-cloud-fill:before{content:"\f29e"}.bi-cloud-fog-fill:before{content:"\f29f"}.bi-cloud-fog:before{content:"\f2a0"}.bi-cloud-fog2-fill:before{content:"\f2a1"}.bi-cloud-fog2:before{content:"\f2a2"}.bi-cloud-hail-fill:before{content:"\f2a3"}.bi-cloud-hail:before{content:"\f2a4"}.bi-cloud-haze-fill:before{content:"\f2a6"}.bi-cloud-haze:before{content:"\f2a7"}.bi-cloud-haze2-fill:before{content:"\f2a8"}.bi-cloud-lightning-fill:before{content:"\f2a9"}.bi-cloud-lightning-rain-fill:before{content:"\f2aa"}.bi-cloud-lightning-rain:before{content:"\f2ab"}.bi-cloud-lightning:before{content:"\f2ac"}.bi-cloud-minus-fill:before{content:"\f2ad"}.bi-cloud-minus:before{content:"\f2ae"}.bi-cloud-moon-fill:before{content:"\f2af"}.bi-cloud-moon:before{content:"\f2b0"}.bi-cloud-plus-fill:before{content:"\f2b1"}.bi-cloud-plus:before{content:"\f2b2"}.bi-cloud-rain-fill:before{content:"\f2b3"}.bi-cloud-rain-heavy-fill:before{content:"\f2b4"}.bi-cloud-rain-heavy:before{content:"\f2b5"}.bi-cloud-rain:before{content:"\f2b6"}.bi-cloud-slash-fill:before{content:"\f2b7"}.bi-cloud-slash:before{content:"\f2b8"}.bi-cloud-sleet-fill:before{content:"\f2b9"}.bi-cloud-sleet:before{content:"\f2ba"}.bi-cloud-snow-fill:before{content:"\f2bb"}.bi-cloud-snow:before{content:"\f2bc"}.bi-cloud-sun-fill:before{content:"\f2bd"}.bi-cloud-sun:before{content:"\f2be"}.bi-cloud-upload-fill:before{content:"\f2bf"}.bi-cloud-upload:before{content:"\f2c0"}.bi-cloud:before{content:"\f2c1"}.bi-clouds-fill:before{content:"\f2c2"}.bi-clouds:before{content:"\f2c3"}.bi-cloudy-fill:before{content:"\f2c4"}.bi-cloudy:before{content:"\f2c5"}.bi-code-slash:before{content:"\f2c6"}.bi-code-square:before{content:"\f2c7"}.bi-code:before{content:"\f2c8"}.bi-collection-fill:before{content:"\f2c9"}.bi-collection-play-fill:before{content:"\f2ca"}.bi-collection-play:before{content:"\f2cb"}.bi-collection:before{content:"\f2cc"}.bi-columns-gap:before{content:"\f2cd"}.bi-columns:before{content:"\f2ce"}.bi-command:before{content:"\f2cf"}.bi-compass-fill:before{content:"\f2d0"}.bi-compass:before{content:"\f2d1"}.bi-cone-striped:before{content:"\f2d2"}.bi-cone:before{content:"\f2d3"}.bi-controller:before{content:"\f2d4"}.bi-cpu-fill:before{content:"\f2d5"}.bi-cpu:before{content:"\f2d6"}.bi-credit-card-2-back-fill:before{content:"\f2d7"}.bi-credit-card-2-back:before{content:"\f2d8"}.bi-credit-card-2-front-fill:before{content:"\f2d9"}.bi-credit-card-2-front:before{content:"\f2da"}.bi-credit-card-fill:before{content:"\f2db"}.bi-credit-card:before{content:"\f2dc"}.bi-crop:before{content:"\f2dd"}.bi-cup-fill:before{content:"\f2de"}.bi-cup-straw:before{content:"\f2df"}.bi-cup:before{content:"\f2e0"}.bi-cursor-fill:before{content:"\f2e1"}.bi-cursor-text:before{content:"\f2e2"}.bi-cursor:before{content:"\f2e3"}.bi-dash-circle-dotted:before{content:"\f2e4"}.bi-dash-circle-fill:before{content:"\f2e5"}.bi-dash-circle:before{content:"\f2e6"}.bi-dash-square-dotted:before{content:"\f2e7"}.bi-dash-square-fill:before{content:"\f2e8"}.bi-dash-square:before{content:"\f2e9"}.bi-dash:before{content:"\f2ea"}.bi-diagram-2-fill:before{content:"\f2eb"}.bi-diagram-2:before{content:"\f2ec"}.bi-diagram-3-fill:before{content:"\f2ed"}.bi-diagram-3:before{content:"\f2ee"}.bi-diamond-fill:before{content:"\f2ef"}.bi-diamond-half:before{content:"\f2f0"}.bi-diamond:before{content:"\f2f1"}.bi-dice-1-fill:before{content:"\f2f2"}.bi-dice-1:before{content:"\f2f3"}.bi-dice-2-fill:before{content:"\f2f4"}.bi-dice-2:before{content:"\f2f5"}.bi-dice-3-fill:before{content:"\f2f6"}.bi-dice-3:before{content:"\f2f7"}.bi-dice-4-fill:before{content:"\f2f8"}.bi-dice-4:before{content:"\f2f9"}.bi-dice-5-fill:before{content:"\f2fa"}.bi-dice-5:before{content:"\f2fb"}.bi-dice-6-fill:before{content:"\f2fc"}.bi-dice-6:before{content:"\f2fd"}.bi-disc-fill:before{content:"\f2fe"}.bi-disc:before{content:"\f2ff"}.bi-discord:before{content:"\f300"}.bi-display-fill:before{content:"\f301"}.bi-display:before{content:"\f302"}.bi-distribute-horizontal:before{content:"\f303"}.bi-distribute-vertical:before{content:"\f304"}.bi-door-closed-fill:before{content:"\f305"}.bi-door-closed:before{content:"\f306"}.bi-door-open-fill:before{content:"\f307"}.bi-door-open:before{content:"\f308"}.bi-dot:before{content:"\f309"}.bi-download:before{content:"\f30a"}.bi-droplet-fill:before{content:"\f30b"}.bi-droplet-half:before{content:"\f30c"}.bi-droplet:before{content:"\f30d"}.bi-earbuds:before{content:"\f30e"}.bi-easel-fill:before{content:"\f30f"}.bi-easel:before{content:"\f310"}.bi-egg-fill:before{content:"\f311"}.bi-egg-fried:before{content:"\f312"}.bi-egg:before{content:"\f313"}.bi-eject-fill:before{content:"\f314"}.bi-eject:before{content:"\f315"}.bi-emoji-angry-fill:before{content:"\f316"}.bi-emoji-angry:before{content:"\f317"}.bi-emoji-dizzy-fill:before{content:"\f318"}.bi-emoji-dizzy:before{content:"\f319"}.bi-emoji-expressionless-fill:before{content:"\f31a"}.bi-emoji-expressionless:before{content:"\f31b"}.bi-emoji-frown-fill:before{content:"\f31c"}.bi-emoji-frown:before{content:"\f31d"}.bi-emoji-heart-eyes-fill:before{content:"\f31e"}.bi-emoji-heart-eyes:before{content:"\f31f"}.bi-emoji-laughing-fill:before{content:"\f320"}.bi-emoji-laughing:before{content:"\f321"}.bi-emoji-neutral-fill:before{content:"\f322"}.bi-emoji-neutral:before{content:"\f323"}.bi-emoji-smile-fill:before{content:"\f324"}.bi-emoji-smile-upside-down-fill:before{content:"\f325"}.bi-emoji-smile-upside-down:before{content:"\f326"}.bi-emoji-smile:before{content:"\f327"}.bi-emoji-sunglasses-fill:before{content:"\f328"}.bi-emoji-sunglasses:before{content:"\f329"}.bi-emoji-wink-fill:before{content:"\f32a"}.bi-emoji-wink:before{content:"\f32b"}.bi-envelope-fill:before{content:"\f32c"}.bi-envelope-open-fill:before{content:"\f32d"}.bi-envelope-open:before{content:"\f32e"}.bi-envelope:before{content:"\f32f"}.bi-eraser-fill:before{content:"\f330"}.bi-eraser:before{content:"\f331"}.bi-exclamation-circle-fill:before{content:"\f332"}.bi-exclamation-circle:before{content:"\f333"}.bi-exclamation-diamond-fill:before{content:"\f334"}.bi-exclamation-diamond:before{content:"\f335"}.bi-exclamation-octagon-fill:before{content:"\f336"}.bi-exclamation-octagon:before{content:"\f337"}.bi-exclamation-square-fill:before{content:"\f338"}.bi-exclamation-square:before{content:"\f339"}.bi-exclamation-triangle-fill:before{content:"\f33a"}.bi-exclamation-triangle:before{content:"\f33b"}.bi-exclamation:before{content:"\f33c"}.bi-exclude:before{content:"\f33d"}.bi-eye-fill:before{content:"\f33e"}.bi-eye-slash-fill:before{content:"\f33f"}.bi-eye-slash:before{content:"\f340"}.bi-eye:before{content:"\f341"}.bi-eyedropper:before{content:"\f342"}.bi-eyeglasses:before{content:"\f343"}.bi-facebook:before{content:"\f344"}.bi-file-arrow-down-fill:before{content:"\f345"}.bi-file-arrow-down:before{content:"\f346"}.bi-file-arrow-up-fill:before{content:"\f347"}.bi-file-arrow-up:before{content:"\f348"}.bi-file-bar-graph-fill:before{content:"\f349"}.bi-file-bar-graph:before{content:"\f34a"}.bi-file-binary-fill:before{content:"\f34b"}.bi-file-binary:before{content:"\f34c"}.bi-file-break-fill:before{content:"\f34d"}.bi-file-break:before{content:"\f34e"}.bi-file-check-fill:before{content:"\f34f"}.bi-file-check:before{content:"\f350"}.bi-file-code-fill:before{content:"\f351"}.bi-file-code:before{content:"\f352"}.bi-file-diff-fill:before{content:"\f353"}.bi-file-diff:before{content:"\f354"}.bi-file-earmark-arrow-down-fill:before{content:"\f355"}.bi-file-earmark-arrow-down:before{content:"\f356"}.bi-file-earmark-arrow-up-fill:before{content:"\f357"}.bi-file-earmark-arrow-up:before{content:"\f358"}.bi-file-earmark-bar-graph-fill:before{content:"\f359"}.bi-file-earmark-bar-graph:before{content:"\f35a"}.bi-file-earmark-binary-fill:before{content:"\f35b"}.bi-file-earmark-binary:before{content:"\f35c"}.bi-file-earmark-break-fill:before{content:"\f35d"}.bi-file-earmark-break:before{content:"\f35e"}.bi-file-earmark-check-fill:before{content:"\f35f"}.bi-file-earmark-check:before{content:"\f360"}.bi-file-earmark-code-fill:before{content:"\f361"}.bi-file-earmark-code:before{content:"\f362"}.bi-file-earmark-diff-fill:before{content:"\f363"}.bi-file-earmark-diff:before{content:"\f364"}.bi-file-earmark-easel-fill:before{content:"\f365"}.bi-file-earmark-easel:before{content:"\f366"}.bi-file-earmark-excel-fill:before{content:"\f367"}.bi-file-earmark-excel:before{content:"\f368"}.bi-file-earmark-fill:before{content:"\f369"}.bi-file-earmark-font-fill:before{content:"\f36a"}.bi-file-earmark-font:before{content:"\f36b"}.bi-file-earmark-image-fill:before{content:"\f36c"}.bi-file-earmark-image:before{content:"\f36d"}.bi-file-earmark-lock-fill:before{content:"\f36e"}.bi-file-earmark-lock:before{content:"\f36f"}.bi-file-earmark-lock2-fill:before{content:"\f370"}.bi-file-earmark-lock2:before{content:"\f371"}.bi-file-earmark-medical-fill:before{content:"\f372"}.bi-file-earmark-medical:before{content:"\f373"}.bi-file-earmark-minus-fill:before{content:"\f374"}.bi-file-earmark-minus:before{content:"\f375"}.bi-file-earmark-music-fill:before{content:"\f376"}.bi-file-earmark-music:before{content:"\f377"}.bi-file-earmark-person-fill:before{content:"\f378"}.bi-file-earmark-person:before{content:"\f379"}.bi-file-earmark-play-fill:before{content:"\f37a"}.bi-file-earmark-play:before{content:"\f37b"}.bi-file-earmark-plus-fill:before{content:"\f37c"}.bi-file-earmark-plus:before{content:"\f37d"}.bi-file-earmark-post-fill:before{content:"\f37e"}.bi-file-earmark-post:before{content:"\f37f"}.bi-file-earmark-ppt-fill:before{content:"\f380"}.bi-file-earmark-ppt:before{content:"\f381"}.bi-file-earmark-richtext-fill:before{content:"\f382"}.bi-file-earmark-richtext:before{content:"\f383"}.bi-file-earmark-ruled-fill:before{content:"\f384"}.bi-file-earmark-ruled:before{content:"\f385"}.bi-file-earmark-slides-fill:before{content:"\f386"}.bi-file-earmark-slides:before{content:"\f387"}.bi-file-earmark-spreadsheet-fill:before{content:"\f388"}.bi-file-earmark-spreadsheet:before{content:"\f389"}.bi-file-earmark-text-fill:before{content:"\f38a"}.bi-file-earmark-text:before{content:"\f38b"}.bi-file-earmark-word-fill:before{content:"\f38c"}.bi-file-earmark-word:before{content:"\f38d"}.bi-file-earmark-x-fill:before{content:"\f38e"}.bi-file-earmark-x:before{content:"\f38f"}.bi-file-earmark-zip-fill:before{content:"\f390"}.bi-file-earmark-zip:before{content:"\f391"}.bi-file-earmark:before{content:"\f392"}.bi-file-easel-fill:before{content:"\f393"}.bi-file-easel:before{content:"\f394"}.bi-file-excel-fill:before{content:"\f395"}.bi-file-excel:before{content:"\f396"}.bi-file-fill:before{content:"\f397"}.bi-file-font-fill:before{content:"\f398"}.bi-file-font:before{content:"\f399"}.bi-file-image-fill:before{content:"\f39a"}.bi-file-image:before{content:"\f39b"}.bi-file-lock-fill:before{content:"\f39c"}.bi-file-lock:before{content:"\f39d"}.bi-file-lock2-fill:before{content:"\f39e"}.bi-file-lock2:before{content:"\f39f"}.bi-file-medical-fill:before{content:"\f3a0"}.bi-file-medical:before{content:"\f3a1"}.bi-file-minus-fill:before{content:"\f3a2"}.bi-file-minus:before{content:"\f3a3"}.bi-file-music-fill:before{content:"\f3a4"}.bi-file-music:before{content:"\f3a5"}.bi-file-person-fill:before{content:"\f3a6"}.bi-file-person:before{content:"\f3a7"}.bi-file-play-fill:before{content:"\f3a8"}.bi-file-play:before{content:"\f3a9"}.bi-file-plus-fill:before{content:"\f3aa"}.bi-file-plus:before{content:"\f3ab"}.bi-file-post-fill:before{content:"\f3ac"}.bi-file-post:before{content:"\f3ad"}.bi-file-ppt-fill:before{content:"\f3ae"}.bi-file-ppt:before{content:"\f3af"}.bi-file-richtext-fill:before{content:"\f3b0"}.bi-file-richtext:before{content:"\f3b1"}.bi-file-ruled-fill:before{content:"\f3b2"}.bi-file-ruled:before{content:"\f3b3"}.bi-file-slides-fill:before{content:"\f3b4"}.bi-file-slides:before{content:"\f3b5"}.bi-file-spreadsheet-fill:before{content:"\f3b6"}.bi-file-spreadsheet:before{content:"\f3b7"}.bi-file-text-fill:before{content:"\f3b8"}.bi-file-text:before{content:"\f3b9"}.bi-file-word-fill:before{content:"\f3ba"}.bi-file-word:before{content:"\f3bb"}.bi-file-x-fill:before{content:"\f3bc"}.bi-file-x:before{content:"\f3bd"}.bi-file-zip-fill:before{content:"\f3be"}.bi-file-zip:before{content:"\f3bf"}.bi-file:before{content:"\f3c0"}.bi-files-alt:before{content:"\f3c1"}.bi-files:before{content:"\f3c2"}.bi-film:before{content:"\f3c3"}.bi-filter-circle-fill:before{content:"\f3c4"}.bi-filter-circle:before{content:"\f3c5"}.bi-filter-left:before{content:"\f3c6"}.bi-filter-right:before{content:"\f3c7"}.bi-filter-square-fill:before{content:"\f3c8"}.bi-filter-square:before{content:"\f3c9"}.bi-filter:before{content:"\f3ca"}.bi-flag-fill:before{content:"\f3cb"}.bi-flag:before{content:"\f3cc"}.bi-flower1:before{content:"\f3cd"}.bi-flower2:before{content:"\f3ce"}.bi-flower3:before{content:"\f3cf"}.bi-folder-check:before{content:"\f3d0"}.bi-folder-fill:before{content:"\f3d1"}.bi-folder-minus:before{content:"\f3d2"}.bi-folder-plus:before{content:"\f3d3"}.bi-folder-symlink-fill:before{content:"\f3d4"}.bi-folder-symlink:before{content:"\f3d5"}.bi-folder-x:before{content:"\f3d6"}.bi-folder:before{content:"\f3d7"}.bi-folder2-open:before{content:"\f3d8"}.bi-folder2:before{content:"\f3d9"}.bi-fonts:before{content:"\f3da"}.bi-forward-fill:before{content:"\f3db"}.bi-forward:before{content:"\f3dc"}.bi-front:before{content:"\f3dd"}.bi-fullscreen-exit:before{content:"\f3de"}.bi-fullscreen:before{content:"\f3df"}.bi-funnel-fill:before{content:"\f3e0"}.bi-funnel:before{content:"\f3e1"}.bi-gear-fill:before{content:"\f3e2"}.bi-gear-wide-connected:before{content:"\f3e3"}.bi-gear-wide:before{content:"\f3e4"}.bi-gear:before{content:"\f3e5"}.bi-gem:before{content:"\f3e6"}.bi-geo-alt-fill:before{content:"\f3e7"}.bi-geo-alt:before{content:"\f3e8"}.bi-geo-fill:before{content:"\f3e9"}.bi-geo:before{content:"\f3ea"}.bi-gift-fill:before{content:"\f3eb"}.bi-gift:before{content:"\f3ec"}.bi-github:before{content:"\f3ed"}.bi-globe:before{content:"\f3ee"}.bi-globe2:before{content:"\f3ef"}.bi-google:before{content:"\f3f0"}.bi-graph-down:before{content:"\f3f1"}.bi-graph-up:before{content:"\f3f2"}.bi-grid-1x2-fill:before{content:"\f3f3"}.bi-grid-1x2:before{content:"\f3f4"}.bi-grid-3x2-gap-fill:before{content:"\f3f5"}.bi-grid-3x2-gap:before{content:"\f3f6"}.bi-grid-3x2:before{content:"\f3f7"}.bi-grid-3x3-gap-fill:before{content:"\f3f8"}.bi-grid-3x3-gap:before{content:"\f3f9"}.bi-grid-3x3:before{content:"\f3fa"}.bi-grid-fill:before{content:"\f3fb"}.bi-grid:before{content:"\f3fc"}.bi-grip-horizontal:before{content:"\f3fd"}.bi-grip-vertical:before{content:"\f3fe"}.bi-hammer:before{content:"\f3ff"}.bi-hand-index-fill:before{content:"\f400"}.bi-hand-index-thumb-fill:before{content:"\f401"}.bi-hand-index-thumb:before{content:"\f402"}.bi-hand-index:before{content:"\f403"}.bi-hand-thumbs-down-fill:before{content:"\f404"}.bi-hand-thumbs-down:before{content:"\f405"}.bi-hand-thumbs-up-fill:before{content:"\f406"}.bi-hand-thumbs-up:before{content:"\f407"}.bi-handbag-fill:before{content:"\f408"}.bi-handbag:before{content:"\f409"}.bi-hash:before{content:"\f40a"}.bi-hdd-fill:before{content:"\f40b"}.bi-hdd-network-fill:before{content:"\f40c"}.bi-hdd-network:before{content:"\f40d"}.bi-hdd-rack-fill:before{content:"\f40e"}.bi-hdd-rack:before{content:"\f40f"}.bi-hdd-stack-fill:before{content:"\f410"}.bi-hdd-stack:before{content:"\f411"}.bi-hdd:before{content:"\f412"}.bi-headphones:before{content:"\f413"}.bi-headset:before{content:"\f414"}.bi-heart-fill:before{content:"\f415"}.bi-heart-half:before{content:"\f416"}.bi-heart:before{content:"\f417"}.bi-heptagon-fill:before{content:"\f418"}.bi-heptagon-half:before{content:"\f419"}.bi-heptagon:before{content:"\f41a"}.bi-hexagon-fill:before{content:"\f41b"}.bi-hexagon-half:before{content:"\f41c"}.bi-hexagon:before{content:"\f41d"}.bi-hourglass-bottom:before{content:"\f41e"}.bi-hourglass-split:before{content:"\f41f"}.bi-hourglass-top:before{content:"\f420"}.bi-hourglass:before{content:"\f421"}.bi-house-door-fill:before{content:"\f422"}.bi-house-door:before{content:"\f423"}.bi-house-fill:before{content:"\f424"}.bi-house:before{content:"\f425"}.bi-hr:before{content:"\f426"}.bi-hurricane:before{content:"\f427"}.bi-image-alt:before{content:"\f428"}.bi-image-fill:before{content:"\f429"}.bi-image:before{content:"\f42a"}.bi-images:before{content:"\f42b"}.bi-inbox-fill:before{content:"\f42c"}.bi-inbox:before{content:"\f42d"}.bi-inboxes-fill:before{content:"\f42e"}.bi-inboxes:before{content:"\f42f"}.bi-info-circle-fill:before{content:"\f430"}.bi-info-circle:before{content:"\f431"}.bi-info-square-fill:before{content:"\f432"}.bi-info-square:before{content:"\f433"}.bi-info:before{content:"\f434"}.bi-input-cursor-text:before{content:"\f435"}.bi-input-cursor:before{content:"\f436"}.bi-instagram:before{content:"\f437"}.bi-intersect:before{content:"\f438"}.bi-journal-album:before{content:"\f439"}.bi-journal-arrow-down:before{content:"\f43a"}.bi-journal-arrow-up:before{content:"\f43b"}.bi-journal-bookmark-fill:before{content:"\f43c"}.bi-journal-bookmark:before{content:"\f43d"}.bi-journal-check:before{content:"\f43e"}.bi-journal-code:before{content:"\f43f"}.bi-journal-medical:before{content:"\f440"}.bi-journal-minus:before{content:"\f441"}.bi-journal-plus:before{content:"\f442"}.bi-journal-richtext:before{content:"\f443"}.bi-journal-text:before{content:"\f444"}.bi-journal-x:before{content:"\f445"}.bi-journal:before{content:"\f446"}.bi-journals:before{content:"\f447"}.bi-joystick:before{content:"\f448"}.bi-justify-left:before{content:"\f449"}.bi-justify-right:before{content:"\f44a"}.bi-justify:before{content:"\f44b"}.bi-kanban-fill:before{content:"\f44c"}.bi-kanban:before{content:"\f44d"}.bi-key-fill:before{content:"\f44e"}.bi-key:before{content:"\f44f"}.bi-keyboard-fill:before{content:"\f450"}.bi-keyboard:before{content:"\f451"}.bi-ladder:before{content:"\f452"}.bi-lamp-fill:before{content:"\f453"}.bi-lamp:before{content:"\f454"}.bi-laptop-fill:before{content:"\f455"}.bi-laptop:before{content:"\f456"}.bi-layer-backward:before{content:"\f457"}.bi-layer-forward:before{content:"\f458"}.bi-layers-fill:before{content:"\f459"}.bi-layers-half:before{content:"\f45a"}.bi-layers:before{content:"\f45b"}.bi-layout-sidebar-inset-reverse:before{content:"\f45c"}.bi-layout-sidebar-inset:before{content:"\f45d"}.bi-layout-sidebar-reverse:before{content:"\f45e"}.bi-layout-sidebar:before{content:"\f45f"}.bi-layout-split:before{content:"\f460"}.bi-layout-text-sidebar-reverse:before{content:"\f461"}.bi-layout-text-sidebar:before{content:"\f462"}.bi-layout-text-window-reverse:before{content:"\f463"}.bi-layout-text-window:before{content:"\f464"}.bi-layout-three-columns:before{content:"\f465"}.bi-layout-wtf:before{content:"\f466"}.bi-life-preserver:before{content:"\f467"}.bi-lightbulb-fill:before{content:"\f468"}.bi-lightbulb-off-fill:before{content:"\f469"}.bi-lightbulb-off:before{content:"\f46a"}.bi-lightbulb:before{content:"\f46b"}.bi-lightning-charge-fill:before{content:"\f46c"}.bi-lightning-charge:before{content:"\f46d"}.bi-lightning-fill:before{content:"\f46e"}.bi-lightning:before{content:"\f46f"}.bi-link-45deg:before{content:"\f470"}.bi-link:before{content:"\f471"}.bi-linkedin:before{content:"\f472"}.bi-list-check:before{content:"\f473"}.bi-list-nested:before{content:"\f474"}.bi-list-ol:before{content:"\f475"}.bi-list-stars:before{content:"\f476"}.bi-list-task:before{content:"\f477"}.bi-list-ul:before{content:"\f478"}.bi-list:before{content:"\f479"}.bi-lock-fill:before{content:"\f47a"}.bi-lock:before{content:"\f47b"}.bi-mailbox:before{content:"\f47c"}.bi-mailbox2:before{content:"\f47d"}.bi-map-fill:before{content:"\f47e"}.bi-map:before{content:"\f47f"}.bi-markdown-fill:before{content:"\f480"}.bi-markdown:before{content:"\f481"}.bi-mask:before{content:"\f482"}.bi-megaphone-fill:before{content:"\f483"}.bi-megaphone:before{content:"\f484"}.bi-menu-app-fill:before{content:"\f485"}.bi-menu-app:before{content:"\f486"}.bi-menu-button-fill:before{content:"\f487"}.bi-menu-button-wide-fill:before{content:"\f488"}.bi-menu-button-wide:before{content:"\f489"}.bi-menu-button:before{content:"\f48a"}.bi-menu-down:before{content:"\f48b"}.bi-menu-up:before{content:"\f48c"}.bi-mic-fill:before{content:"\f48d"}.bi-mic-mute-fill:before{content:"\f48e"}.bi-mic-mute:before{content:"\f48f"}.bi-mic:before{content:"\f490"}.bi-minecart-loaded:before{content:"\f491"}.bi-minecart:before{content:"\f492"}.bi-moisture:before{content:"\f493"}.bi-moon-fill:before{content:"\f494"}.bi-moon-stars-fill:before{content:"\f495"}.bi-moon-stars:before{content:"\f496"}.bi-moon:before{content:"\f497"}.bi-mouse-fill:before{content:"\f498"}.bi-mouse:before{content:"\f499"}.bi-mouse2-fill:before{content:"\f49a"}.bi-mouse2:before{content:"\f49b"}.bi-mouse3-fill:before{content:"\f49c"}.bi-mouse3:before{content:"\f49d"}.bi-music-note-beamed:before{content:"\f49e"}.bi-music-note-list:before{content:"\f49f"}.bi-music-note:before{content:"\f4a0"}.bi-music-player-fill:before{content:"\f4a1"}.bi-music-player:before{content:"\f4a2"}.bi-newspaper:before{content:"\f4a3"}.bi-node-minus-fill:before{content:"\f4a4"}.bi-node-minus:before{content:"\f4a5"}.bi-node-plus-fill:before{content:"\f4a6"}.bi-node-plus:before{content:"\f4a7"}.bi-nut-fill:before{content:"\f4a8"}.bi-nut:before{content:"\f4a9"}.bi-octagon-fill:before{content:"\f4aa"}.bi-octagon-half:before{content:"\f4ab"}.bi-octagon:before{content:"\f4ac"}.bi-option:before{content:"\f4ad"}.bi-outlet:before{content:"\f4ae"}.bi-paint-bucket:before{content:"\f4af"}.bi-palette-fill:before{content:"\f4b0"}.bi-palette:before{content:"\f4b1"}.bi-palette2:before{content:"\f4b2"}.bi-paperclip:before{content:"\f4b3"}.bi-paragraph:before{content:"\f4b4"}.bi-patch-check-fill:before{content:"\f4b5"}.bi-patch-check:before{content:"\f4b6"}.bi-patch-exclamation-fill:before{content:"\f4b7"}.bi-patch-exclamation:before{content:"\f4b8"}.bi-patch-minus-fill:before{content:"\f4b9"}.bi-patch-minus:before{content:"\f4ba"}.bi-patch-plus-fill:before{content:"\f4bb"}.bi-patch-plus:before{content:"\f4bc"}.bi-patch-question-fill:before{content:"\f4bd"}.bi-patch-question:before{content:"\f4be"}.bi-pause-btn-fill:before{content:"\f4bf"}.bi-pause-btn:before{content:"\f4c0"}.bi-pause-circle-fill:before{content:"\f4c1"}.bi-pause-circle:before{content:"\f4c2"}.bi-pause-fill:before{content:"\f4c3"}.bi-pause:before{content:"\f4c4"}.bi-peace-fill:before{content:"\f4c5"}.bi-peace:before{content:"\f4c6"}.bi-pen-fill:before{content:"\f4c7"}.bi-pen:before{content:"\f4c8"}.bi-pencil-fill:before{content:"\f4c9"}.bi-pencil-square:before{content:"\f4ca"}.bi-pencil:before{content:"\f4cb"}.bi-pentagon-fill:before{content:"\f4cc"}.bi-pentagon-half:before{content:"\f4cd"}.bi-pentagon:before{content:"\f4ce"}.bi-people-fill:before{content:"\f4cf"}.bi-people:before{content:"\f4d0"}.bi-percent:before{content:"\f4d1"}.bi-person-badge-fill:before{content:"\f4d2"}.bi-person-badge:before{content:"\f4d3"}.bi-person-bounding-box:before{content:"\f4d4"}.bi-person-check-fill:before{content:"\f4d5"}.bi-person-check:before{content:"\f4d6"}.bi-person-circle:before{content:"\f4d7"}.bi-person-dash-fill:before{content:"\f4d8"}.bi-person-dash:before{content:"\f4d9"}.bi-person-fill:before{content:"\f4da"}.bi-person-lines-fill:before{content:"\f4db"}.bi-person-plus-fill:before{content:"\f4dc"}.bi-person-plus:before{content:"\f4dd"}.bi-person-square:before{content:"\f4de"}.bi-person-x-fill:before{content:"\f4df"}.bi-person-x:before{content:"\f4e0"}.bi-person:before{content:"\f4e1"}.bi-phone-fill:before{content:"\f4e2"}.bi-phone-landscape-fill:before{content:"\f4e3"}.bi-phone-landscape:before{content:"\f4e4"}.bi-phone-vibrate-fill:before{content:"\f4e5"}.bi-phone-vibrate:before{content:"\f4e6"}.bi-phone:before{content:"\f4e7"}.bi-pie-chart-fill:before{content:"\f4e8"}.bi-pie-chart:before{content:"\f4e9"}.bi-pin-angle-fill:before{content:"\f4ea"}.bi-pin-angle:before{content:"\f4eb"}.bi-pin-fill:before{content:"\f4ec"}.bi-pin:before{content:"\f4ed"}.bi-pip-fill:before{content:"\f4ee"}.bi-pip:before{content:"\f4ef"}.bi-play-btn-fill:before{content:"\f4f0"}.bi-play-btn:before{content:"\f4f1"}.bi-play-circle-fill:before{content:"\f4f2"}.bi-play-circle:before{content:"\f4f3"}.bi-play-fill:before{content:"\f4f4"}.bi-play:before{content:"\f4f5"}.bi-plug-fill:before{content:"\f4f6"}.bi-plug:before{content:"\f4f7"}.bi-plus-circle-dotted:before{content:"\f4f8"}.bi-plus-circle-fill:before{content:"\f4f9"}.bi-plus-circle:before{content:"\f4fa"}.bi-plus-square-dotted:before{content:"\f4fb"}.bi-plus-square-fill:before{content:"\f4fc"}.bi-plus-square:before{content:"\f4fd"}.bi-plus:before{content:"\f4fe"}.bi-power:before{content:"\f4ff"}.bi-printer-fill:before{content:"\f500"}.bi-printer:before{content:"\f501"}.bi-puzzle-fill:before{content:"\f502"}.bi-puzzle:before{content:"\f503"}.bi-question-circle-fill:before{content:"\f504"}.bi-question-circle:before{content:"\f505"}.bi-question-diamond-fill:before{content:"\f506"}.bi-question-diamond:before{content:"\f507"}.bi-question-octagon-fill:before{content:"\f508"}.bi-question-octagon:before{content:"\f509"}.bi-question-square-fill:before{content:"\f50a"}.bi-question-square:before{content:"\f50b"}.bi-question:before{content:"\f50c"}.bi-rainbow:before{content:"\f50d"}.bi-receipt-cutoff:before{content:"\f50e"}.bi-receipt:before{content:"\f50f"}.bi-reception-0:before{content:"\f510"}.bi-reception-1:before{content:"\f511"}.bi-reception-2:before{content:"\f512"}.bi-reception-3:before{content:"\f513"}.bi-reception-4:before{content:"\f514"}.bi-record-btn-fill:before{content:"\f515"}.bi-record-btn:before{content:"\f516"}.bi-record-circle-fill:before{content:"\f517"}.bi-record-circle:before{content:"\f518"}.bi-record-fill:before{content:"\f519"}.bi-record:before{content:"\f51a"}.bi-record2-fill:before{content:"\f51b"}.bi-record2:before{content:"\f51c"}.bi-reply-all-fill:before{content:"\f51d"}.bi-reply-all:before{content:"\f51e"}.bi-reply-fill:before{content:"\f51f"}.bi-reply:before{content:"\f520"}.bi-rss-fill:before{content:"\f521"}.bi-rss:before{content:"\f522"}.bi-rulers:before{content:"\f523"}.bi-save-fill:before{content:"\f524"}.bi-save:before{content:"\f525"}.bi-save2-fill:before{content:"\f526"}.bi-save2:before{content:"\f527"}.bi-scissors:before{content:"\f528"}.bi-screwdriver:before{content:"\f529"}.bi-search:before{content:"\f52a"}.bi-segmented-nav:before{content:"\f52b"}.bi-server:before{content:"\f52c"}.bi-share-fill:before{content:"\f52d"}.bi-share:before{content:"\f52e"}.bi-shield-check:before{content:"\f52f"}.bi-shield-exclamation:before{content:"\f530"}.bi-shield-fill-check:before{content:"\f531"}.bi-shield-fill-exclamation:before{content:"\f532"}.bi-shield-fill-minus:before{content:"\f533"}.bi-shield-fill-plus:before{content:"\f534"}.bi-shield-fill-x:before{content:"\f535"}.bi-shield-fill:before{content:"\f536"}.bi-shield-lock-fill:before{content:"\f537"}.bi-shield-lock:before{content:"\f538"}.bi-shield-minus:before{content:"\f539"}.bi-shield-plus:before{content:"\f53a"}.bi-shield-shaded:before{content:"\f53b"}.bi-shield-slash-fill:before{content:"\f53c"}.bi-shield-slash:before{content:"\f53d"}.bi-shield-x:before{content:"\f53e"}.bi-shield:before{content:"\f53f"}.bi-shift-fill:before{content:"\f540"}.bi-shift:before{content:"\f541"}.bi-shop-window:before{content:"\f542"}.bi-shop:before{content:"\f543"}.bi-shuffle:before{content:"\f544"}.bi-signpost-2-fill:before{content:"\f545"}.bi-signpost-2:before{content:"\f546"}.bi-signpost-fill:before{content:"\f547"}.bi-signpost-split-fill:before{content:"\f548"}.bi-signpost-split:before{content:"\f549"}.bi-signpost:before{content:"\f54a"}.bi-sim-fill:before{content:"\f54b"}.bi-sim:before{content:"\f54c"}.bi-skip-backward-btn-fill:before{content:"\f54d"}.bi-skip-backward-btn:before{content:"\f54e"}.bi-skip-backward-circle-fill:before{content:"\f54f"}.bi-skip-backward-circle:before{content:"\f550"}.bi-skip-backward-fill:before{content:"\f551"}.bi-skip-backward:before{content:"\f552"}.bi-skip-end-btn-fill:before{content:"\f553"}.bi-skip-end-btn:before{content:"\f554"}.bi-skip-end-circle-fill:before{content:"\f555"}.bi-skip-end-circle:before{content:"\f556"}.bi-skip-end-fill:before{content:"\f557"}.bi-skip-end:before{content:"\f558"}.bi-skip-forward-btn-fill:before{content:"\f559"}.bi-skip-forward-btn:before{content:"\f55a"}.bi-skip-forward-circle-fill:before{content:"\f55b"}.bi-skip-forward-circle:before{content:"\f55c"}.bi-skip-forward-fill:before{content:"\f55d"}.bi-skip-forward:before{content:"\f55e"}.bi-skip-start-btn-fill:before{content:"\f55f"}.bi-skip-start-btn:before{content:"\f560"}.bi-skip-start-circle-fill:before{content:"\f561"}.bi-skip-start-circle:before{content:"\f562"}.bi-skip-start-fill:before{content:"\f563"}.bi-skip-start:before{content:"\f564"}.bi-slack:before{content:"\f565"}.bi-slash-circle-fill:before{content:"\f566"}.bi-slash-circle:before{content:"\f567"}.bi-slash-square-fill:before{content:"\f568"}.bi-slash-square:before{content:"\f569"}.bi-slash:before{content:"\f56a"}.bi-sliders:before{content:"\f56b"}.bi-smartwatch:before{content:"\f56c"}.bi-snow:before{content:"\f56d"}.bi-snow2:before{content:"\f56e"}.bi-snow3:before{content:"\f56f"}.bi-sort-alpha-down-alt:before{content:"\f570"}.bi-sort-alpha-down:before{content:"\f571"}.bi-sort-alpha-up-alt:before{content:"\f572"}.bi-sort-alpha-up:before{content:"\f573"}.bi-sort-down-alt:before{content:"\f574"}.bi-sort-down:before{content:"\f575"}.bi-sort-numeric-down-alt:before{content:"\f576"}.bi-sort-numeric-down:before{content:"\f577"}.bi-sort-numeric-up-alt:before{content:"\f578"}.bi-sort-numeric-up:before{content:"\f579"}.bi-sort-up-alt:before{content:"\f57a"}.bi-sort-up:before{content:"\f57b"}.bi-soundwave:before{content:"\f57c"}.bi-speaker-fill:before{content:"\f57d"}.bi-speaker:before{content:"\f57e"}.bi-speedometer:before{content:"\f57f"}.bi-speedometer2:before{content:"\f580"}.bi-spellcheck:before{content:"\f581"}.bi-square-fill:before{content:"\f582"}.bi-square-half:before{content:"\f583"}.bi-square:before{content:"\f584"}.bi-stack:before{content:"\f585"}.bi-star-fill:before{content:"\f586"}.bi-star-half:before{content:"\f587"}.bi-star:before{content:"\f588"}.bi-stars:before{content:"\f589"}.bi-stickies-fill:before{content:"\f58a"}.bi-stickies:before{content:"\f58b"}.bi-sticky-fill:before{content:"\f58c"}.bi-sticky:before{content:"\f58d"}.bi-stop-btn-fill:before{content:"\f58e"}.bi-stop-btn:before{content:"\f58f"}.bi-stop-circle-fill:before{content:"\f590"}.bi-stop-circle:before{content:"\f591"}.bi-stop-fill:before{content:"\f592"}.bi-stop:before{content:"\f593"}.bi-stoplights-fill:before{content:"\f594"}.bi-stoplights:before{content:"\f595"}.bi-stopwatch-fill:before{content:"\f596"}.bi-stopwatch:before{content:"\f597"}.bi-subtract:before{content:"\f598"}.bi-suit-club-fill:before{content:"\f599"}.bi-suit-club:before{content:"\f59a"}.bi-suit-diamond-fill:before{content:"\f59b"}.bi-suit-diamond:before{content:"\f59c"}.bi-suit-heart-fill:before{content:"\f59d"}.bi-suit-heart:before{content:"\f59e"}.bi-suit-spade-fill:before{content:"\f59f"}.bi-suit-spade:before{content:"\f5a0"}.bi-sun-fill:before{content:"\f5a1"}.bi-sun:before{content:"\f5a2"}.bi-sunglasses:before{content:"\f5a3"}.bi-sunrise-fill:before{content:"\f5a4"}.bi-sunrise:before{content:"\f5a5"}.bi-sunset-fill:before{content:"\f5a6"}.bi-sunset:before{content:"\f5a7"}.bi-symmetry-horizontal:before{content:"\f5a8"}.bi-symmetry-vertical:before{content:"\f5a9"}.bi-table:before{content:"\f5aa"}.bi-tablet-fill:before{content:"\f5ab"}.bi-tablet-landscape-fill:before{content:"\f5ac"}.bi-tablet-landscape:before{content:"\f5ad"}.bi-tablet:before{content:"\f5ae"}.bi-tag-fill:before{content:"\f5af"}.bi-tag:before{content:"\f5b0"}.bi-tags-fill:before{content:"\f5b1"}.bi-tags:before{content:"\f5b2"}.bi-telegram:before{content:"\f5b3"}.bi-telephone-fill:before{content:"\f5b4"}.bi-telephone-forward-fill:before{content:"\f5b5"}.bi-telephone-forward:before{content:"\f5b6"}.bi-telephone-inbound-fill:before{content:"\f5b7"}.bi-telephone-inbound:before{content:"\f5b8"}.bi-telephone-minus-fill:before{content:"\f5b9"}.bi-telephone-minus:before{content:"\f5ba"}.bi-telephone-outbound-fill:before{content:"\f5bb"}.bi-telephone-outbound:before{content:"\f5bc"}.bi-telephone-plus-fill:before{content:"\f5bd"}.bi-telephone-plus:before{content:"\f5be"}.bi-telephone-x-fill:before{content:"\f5bf"}.bi-telephone-x:before{content:"\f5c0"}.bi-telephone:before{content:"\f5c1"}.bi-terminal-fill:before{content:"\f5c2"}.bi-terminal:before{content:"\f5c3"}.bi-text-center:before{content:"\f5c4"}.bi-text-indent-left:before{content:"\f5c5"}.bi-text-indent-right:before{content:"\f5c6"}.bi-text-left:before{content:"\f5c7"}.bi-text-paragraph:before{content:"\f5c8"}.bi-text-right:before{content:"\f5c9"}.bi-textarea-resize:before{content:"\f5ca"}.bi-textarea-t:before{content:"\f5cb"}.bi-textarea:before{content:"\f5cc"}.bi-thermometer-half:before{content:"\f5cd"}.bi-thermometer-high:before{content:"\f5ce"}.bi-thermometer-low:before{content:"\f5cf"}.bi-thermometer-snow:before{content:"\f5d0"}.bi-thermometer-sun:before{content:"\f5d1"}.bi-thermometer:before{content:"\f5d2"}.bi-three-dots-vertical:before{content:"\f5d3"}.bi-three-dots:before{content:"\f5d4"}.bi-toggle-off:before{content:"\f5d5"}.bi-toggle-on:before{content:"\f5d6"}.bi-toggle2-off:before{content:"\f5d7"}.bi-toggle2-on:before{content:"\f5d8"}.bi-toggles:before{content:"\f5d9"}.bi-toggles2:before{content:"\f5da"}.bi-tools:before{content:"\f5db"}.bi-tornado:before{content:"\f5dc"}.bi-trash-fill:before{content:"\f5dd"}.bi-trash:before{content:"\f5de"}.bi-trash2-fill:before{content:"\f5df"}.bi-trash2:before{content:"\f5e0"}.bi-tree-fill:before{content:"\f5e1"}.bi-tree:before{content:"\f5e2"}.bi-triangle-fill:before{content:"\f5e3"}.bi-triangle-half:before{content:"\f5e4"}.bi-triangle:before{content:"\f5e5"}.bi-trophy-fill:before{content:"\f5e6"}.bi-trophy:before{content:"\f5e7"}.bi-tropical-storm:before{content:"\f5e8"}.bi-truck-flatbed:before{content:"\f5e9"}.bi-truck:before{content:"\f5ea"}.bi-tsunami:before{content:"\f5eb"}.bi-tv-fill:before{content:"\f5ec"}.bi-tv:before{content:"\f5ed"}.bi-twitch:before{content:"\f5ee"}.bi-twitter:before{content:"\f5ef"}.bi-type-bold:before{content:"\f5f0"}.bi-type-h1:before{content:"\f5f1"}.bi-type-h2:before{content:"\f5f2"}.bi-type-h3:before{content:"\f5f3"}.bi-type-italic:before{content:"\f5f4"}.bi-type-strikethrough:before{content:"\f5f5"}.bi-type-underline:before{content:"\f5f6"}.bi-type:before{content:"\f5f7"}.bi-ui-checks-grid:before{content:"\f5f8"}.bi-ui-checks:before{content:"\f5f9"}.bi-ui-radios-grid:before{content:"\f5fa"}.bi-ui-radios:before{content:"\f5fb"}.bi-umbrella-fill:before{content:"\f5fc"}.bi-umbrella:before{content:"\f5fd"}.bi-union:before{content:"\f5fe"}.bi-unlock-fill:before{content:"\f5ff"}.bi-unlock:before{content:"\f600"}.bi-upc-scan:before{content:"\f601"}.bi-upc:before{content:"\f602"}.bi-upload:before{content:"\f603"}.bi-vector-pen:before{content:"\f604"}.bi-view-list:before{content:"\f605"}.bi-view-stacked:before{content:"\f606"}.bi-vinyl-fill:before{content:"\f607"}.bi-vinyl:before{content:"\f608"}.bi-voicemail:before{content:"\f609"}.bi-volume-down-fill:before{content:"\f60a"}.bi-volume-down:before{content:"\f60b"}.bi-volume-mute-fill:before{content:"\f60c"}.bi-volume-mute:before{content:"\f60d"}.bi-volume-off-fill:before{content:"\f60e"}.bi-volume-off:before{content:"\f60f"}.bi-volume-up-fill:before{content:"\f610"}.bi-volume-up:before{content:"\f611"}.bi-vr:before{content:"\f612"}.bi-wallet-fill:before{content:"\f613"}.bi-wallet:before{content:"\f614"}.bi-wallet2:before{content:"\f615"}.bi-watch:before{content:"\f616"}.bi-water:before{content:"\f617"}.bi-whatsapp:before{content:"\f618"}.bi-wifi-1:before{content:"\f619"}.bi-wifi-2:before{content:"\f61a"}.bi-wifi-off:before{content:"\f61b"}.bi-wifi:before{content:"\f61c"}.bi-wind:before{content:"\f61d"}.bi-window-dock:before{content:"\f61e"}.bi-window-sidebar:before{content:"\f61f"}.bi-window:before{content:"\f620"}.bi-wrench:before{content:"\f621"}.bi-x-circle-fill:before{content:"\f622"}.bi-x-circle:before{content:"\f623"}.bi-x-diamond-fill:before{content:"\f624"}.bi-x-diamond:before{content:"\f625"}.bi-x-octagon-fill:before{content:"\f626"}.bi-x-octagon:before{content:"\f627"}.bi-x-square-fill:before{content:"\f628"}.bi-x-square:before{content:"\f629"}.bi-x:before{content:"\f62a"}.bi-youtube:before{content:"\f62b"}.bi-zoom-in:before{content:"\f62c"}.bi-zoom-out:before{content:"\f62d"}.bi-bank:before{content:"\f62e"}.bi-bank2:before{content:"\f62f"}.bi-bell-slash-fill:before{content:"\f630"}.bi-bell-slash:before{content:"\f631"}.bi-cash-coin:before{content:"\f632"}.bi-check-lg:before{content:"\f633"}.bi-coin:before{content:"\f634"}.bi-currency-bitcoin:before{content:"\f635"}.bi-currency-dollar:before{content:"\f636"}.bi-currency-euro:before{content:"\f637"}.bi-currency-exchange:before{content:"\f638"}.bi-currency-pound:before{content:"\f639"}.bi-currency-yen:before{content:"\f63a"}.bi-dash-lg:before{content:"\f63b"}.bi-exclamation-lg:before{content:"\f63c"}.bi-file-earmark-pdf-fill:before{content:"\f63d"}.bi-file-earmark-pdf:before{content:"\f63e"}.bi-file-pdf-fill:before{content:"\f63f"}.bi-file-pdf:before{content:"\f640"}.bi-gender-ambiguous:before{content:"\f641"}.bi-gender-female:before{content:"\f642"}.bi-gender-male:before{content:"\f643"}.bi-gender-trans:before{content:"\f644"}.bi-headset-vr:before{content:"\f645"}.bi-info-lg:before{content:"\f646"}.bi-mastodon:before{content:"\f647"}.bi-messenger:before{content:"\f648"}.bi-piggy-bank-fill:before{content:"\f649"}.bi-piggy-bank:before{content:"\f64a"}.bi-pin-map-fill:before{content:"\f64b"}.bi-pin-map:before{content:"\f64c"}.bi-plus-lg:before{content:"\f64d"}.bi-question-lg:before{content:"\f64e"}.bi-recycle:before{content:"\f64f"}.bi-reddit:before{content:"\f650"}.bi-safe-fill:before{content:"\f651"}.bi-safe2-fill:before{content:"\f652"}.bi-safe2:before{content:"\f653"}.bi-sd-card-fill:before{content:"\f654"}.bi-sd-card:before{content:"\f655"}.bi-skype:before{content:"\f656"}.bi-slash-lg:before{content:"\f657"}.bi-translate:before{content:"\f658"}.bi-x-lg:before{content:"\f659"}.bi-safe:before{content:"\f65a"}.bi-apple:before{content:"\f65b"}.bi-microsoft:before{content:"\f65d"}.bi-windows:before{content:"\f65e"}.bi-behance:before{content:"\f65c"}.bi-dribbble:before{content:"\f65f"}.bi-line:before{content:"\f660"}.bi-medium:before{content:"\f661"}.bi-paypal:before{content:"\f662"}.bi-pinterest:before{content:"\f663"}.bi-signal:before{content:"\f664"}.bi-snapchat:before{content:"\f665"}.bi-spotify:before{content:"\f666"}.bi-stack-overflow:before{content:"\f667"}.bi-strava:before{content:"\f668"}.bi-wordpress:before{content:"\f669"}.bi-vimeo:before{content:"\f66a"}.bi-activity:before{content:"\f66b"}.bi-easel2-fill:before{content:"\f66c"}.bi-easel2:before{content:"\f66d"}.bi-easel3-fill:before{content:"\f66e"}.bi-easel3:before{content:"\f66f"}.bi-fan:before{content:"\f670"}.bi-fingerprint:before{content:"\f671"}.bi-graph-down-arrow:before{content:"\f672"}.bi-graph-up-arrow:before{content:"\f673"}.bi-hypnotize:before{content:"\f674"}.bi-magic:before{content:"\f675"}.bi-person-rolodex:before{content:"\f676"}.bi-person-video:before{content:"\f677"}.bi-person-video2:before{content:"\f678"}.bi-person-video3:before{content:"\f679"}.bi-person-workspace:before{content:"\f67a"}.bi-radioactive:before{content:"\f67b"}.bi-webcam-fill:before{content:"\f67c"}.bi-webcam:before{content:"\f67d"}.bi-yin-yang:before{content:"\f67e"}.bi-bandaid-fill:before{content:"\f680"}.bi-bandaid:before{content:"\f681"}.bi-bluetooth:before{content:"\f682"}.bi-body-text:before{content:"\f683"}.bi-boombox:before{content:"\f684"}.bi-boxes:before{content:"\f685"}.bi-dpad-fill:before{content:"\f686"}.bi-dpad:before{content:"\f687"}.bi-ear-fill:before{content:"\f688"}.bi-ear:before{content:"\f689"}.bi-envelope-check-fill:before{content:"\f68b"}.bi-envelope-check:before{content:"\f68c"}.bi-envelope-dash-fill:before{content:"\f68e"}.bi-envelope-dash:before{content:"\f68f"}.bi-envelope-exclamation-fill:before{content:"\f691"}.bi-envelope-exclamation:before{content:"\f692"}.bi-envelope-plus-fill:before{content:"\f693"}.bi-envelope-plus:before{content:"\f694"}.bi-envelope-slash-fill:before{content:"\f696"}.bi-envelope-slash:before{content:"\f697"}.bi-envelope-x-fill:before{content:"\f699"}.bi-envelope-x:before{content:"\f69a"}.bi-explicit-fill:before{content:"\f69b"}.bi-explicit:before{content:"\f69c"}.bi-git:before{content:"\f69d"}.bi-infinity:before{content:"\f69e"}.bi-list-columns-reverse:before{content:"\f69f"}.bi-list-columns:before{content:"\f6a0"}.bi-meta:before{content:"\f6a1"}.bi-nintendo-switch:before{content:"\f6a4"}.bi-pc-display-horizontal:before{content:"\f6a5"}.bi-pc-display:before{content:"\f6a6"}.bi-pc-horizontal:before{content:"\f6a7"}.bi-pc:before{content:"\f6a8"}.bi-playstation:before{content:"\f6a9"}.bi-plus-slash-minus:before{content:"\f6aa"}.bi-projector-fill:before{content:"\f6ab"}.bi-projector:before{content:"\f6ac"}.bi-qr-code-scan:before{content:"\f6ad"}.bi-qr-code:before{content:"\f6ae"}.bi-quora:before{content:"\f6af"}.bi-quote:before{content:"\f6b0"}.bi-robot:before{content:"\f6b1"}.bi-send-check-fill:before{content:"\f6b2"}.bi-send-check:before{content:"\f6b3"}.bi-send-dash-fill:before{content:"\f6b4"}.bi-send-dash:before{content:"\f6b5"}.bi-send-exclamation-fill:before{content:"\f6b7"}.bi-send-exclamation:before{content:"\f6b8"}.bi-send-fill:before{content:"\f6b9"}.bi-send-plus-fill:before{content:"\f6ba"}.bi-send-plus:before{content:"\f6bb"}.bi-send-slash-fill:before{content:"\f6bc"}.bi-send-slash:before{content:"\f6bd"}.bi-send-x-fill:before{content:"\f6be"}.bi-send-x:before{content:"\f6bf"}.bi-send:before{content:"\f6c0"}.bi-steam:before{content:"\f6c1"}.bi-terminal-dash:before{content:"\f6c3"}.bi-terminal-plus:before{content:"\f6c4"}.bi-terminal-split:before{content:"\f6c5"}.bi-ticket-detailed-fill:before{content:"\f6c6"}.bi-ticket-detailed:before{content:"\f6c7"}.bi-ticket-fill:before{content:"\f6c8"}.bi-ticket-perforated-fill:before{content:"\f6c9"}.bi-ticket-perforated:before{content:"\f6ca"}.bi-ticket:before{content:"\f6cb"}.bi-tiktok:before{content:"\f6cc"}.bi-window-dash:before{content:"\f6cd"}.bi-window-desktop:before{content:"\f6ce"}.bi-window-fullscreen:before{content:"\f6cf"}.bi-window-plus:before{content:"\f6d0"}.bi-window-split:before{content:"\f6d1"}.bi-window-stack:before{content:"\f6d2"}.bi-window-x:before{content:"\f6d3"}.bi-xbox:before{content:"\f6d4"}.bi-ethernet:before{content:"\f6d5"}.bi-hdmi-fill:before{content:"\f6d6"}.bi-hdmi:before{content:"\f6d7"}.bi-usb-c-fill:before{content:"\f6d8"}.bi-usb-c:before{content:"\f6d9"}.bi-usb-fill:before{content:"\f6da"}.bi-usb-plug-fill:before{content:"\f6db"}.bi-usb-plug:before{content:"\f6dc"}.bi-usb-symbol:before{content:"\f6dd"}.bi-usb:before{content:"\f6de"}.bi-boombox-fill:before{content:"\f6df"}.bi-displayport:before{content:"\f6e1"}.bi-gpu-card:before{content:"\f6e2"}.bi-memory:before{content:"\f6e3"}.bi-modem-fill:before{content:"\f6e4"}.bi-modem:before{content:"\f6e5"}.bi-motherboard-fill:before{content:"\f6e6"}.bi-motherboard:before{content:"\f6e7"}.bi-optical-audio-fill:before{content:"\f6e8"}.bi-optical-audio:before{content:"\f6e9"}.bi-pci-card:before{content:"\f6ea"}.bi-router-fill:before{content:"\f6eb"}.bi-router:before{content:"\f6ec"}.bi-thunderbolt-fill:before{content:"\f6ef"}.bi-thunderbolt:before{content:"\f6f0"}.bi-usb-drive-fill:before{content:"\f6f1"}.bi-usb-drive:before{content:"\f6f2"}.bi-usb-micro-fill:before{content:"\f6f3"}.bi-usb-micro:before{content:"\f6f4"}.bi-usb-mini-fill:before{content:"\f6f5"}.bi-usb-mini:before{content:"\f6f6"}.bi-cloud-haze2:before{content:"\f6f7"}.bi-device-hdd-fill:before{content:"\f6f8"}.bi-device-hdd:before{content:"\f6f9"}.bi-device-ssd-fill:before{content:"\f6fa"}.bi-device-ssd:before{content:"\f6fb"}.bi-displayport-fill:before{content:"\f6fc"}.bi-mortarboard-fill:before{content:"\f6fd"}.bi-mortarboard:before{content:"\f6fe"}.bi-terminal-x:before{content:"\f6ff"}.bi-arrow-through-heart-fill:before{content:"\f700"}.bi-arrow-through-heart:before{content:"\f701"}.bi-badge-sd-fill:before{content:"\f702"}.bi-badge-sd:before{content:"\f703"}.bi-bag-heart-fill:before{content:"\f704"}.bi-bag-heart:before{content:"\f705"}.bi-balloon-fill:before{content:"\f706"}.bi-balloon-heart-fill:before{content:"\f707"}.bi-balloon-heart:before{content:"\f708"}.bi-balloon:before{content:"\f709"}.bi-box2-fill:before{content:"\f70a"}.bi-box2-heart-fill:before{content:"\f70b"}.bi-box2-heart:before{content:"\f70c"}.bi-box2:before{content:"\f70d"}.bi-braces-asterisk:before{content:"\f70e"}.bi-calendar-heart-fill:before{content:"\f70f"}.bi-calendar-heart:before{content:"\f710"}.bi-calendar2-heart-fill:before{content:"\f711"}.bi-calendar2-heart:before{content:"\f712"}.bi-chat-heart-fill:before{content:"\f713"}.bi-chat-heart:before{content:"\f714"}.bi-chat-left-heart-fill:before{content:"\f715"}.bi-chat-left-heart:before{content:"\f716"}.bi-chat-right-heart-fill:before{content:"\f717"}.bi-chat-right-heart:before{content:"\f718"}.bi-chat-square-heart-fill:before{content:"\f719"}.bi-chat-square-heart:before{content:"\f71a"}.bi-clipboard-check-fill:before{content:"\f71b"}.bi-clipboard-data-fill:before{content:"\f71c"}.bi-clipboard-fill:before{content:"\f71d"}.bi-clipboard-heart-fill:before{content:"\f71e"}.bi-clipboard-heart:before{content:"\f71f"}.bi-clipboard-minus-fill:before{content:"\f720"}.bi-clipboard-plus-fill:before{content:"\f721"}.bi-clipboard-pulse:before{content:"\f722"}.bi-clipboard-x-fill:before{content:"\f723"}.bi-clipboard2-check-fill:before{content:"\f724"}.bi-clipboard2-check:before{content:"\f725"}.bi-clipboard2-data-fill:before{content:"\f726"}.bi-clipboard2-data:before{content:"\f727"}.bi-clipboard2-fill:before{content:"\f728"}.bi-clipboard2-heart-fill:before{content:"\f729"}.bi-clipboard2-heart:before{content:"\f72a"}.bi-clipboard2-minus-fill:before{content:"\f72b"}.bi-clipboard2-minus:before{content:"\f72c"}.bi-clipboard2-plus-fill:before{content:"\f72d"}.bi-clipboard2-plus:before{content:"\f72e"}.bi-clipboard2-pulse-fill:before{content:"\f72f"}.bi-clipboard2-pulse:before{content:"\f730"}.bi-clipboard2-x-fill:before{content:"\f731"}.bi-clipboard2-x:before{content:"\f732"}.bi-clipboard2:before{content:"\f733"}.bi-emoji-kiss-fill:before{content:"\f734"}.bi-emoji-kiss:before{content:"\f735"}.bi-envelope-heart-fill:before{content:"\f736"}.bi-envelope-heart:before{content:"\f737"}.bi-envelope-open-heart-fill:before{content:"\f738"}.bi-envelope-open-heart:before{content:"\f739"}.bi-envelope-paper-fill:before{content:"\f73a"}.bi-envelope-paper-heart-fill:before{content:"\f73b"}.bi-envelope-paper-heart:before{content:"\f73c"}.bi-envelope-paper:before{content:"\f73d"}.bi-filetype-aac:before{content:"\f73e"}.bi-filetype-ai:before{content:"\f73f"}.bi-filetype-bmp:before{content:"\f740"}.bi-filetype-cs:before{content:"\f741"}.bi-filetype-css:before{content:"\f742"}.bi-filetype-csv:before{content:"\f743"}.bi-filetype-doc:before{content:"\f744"}.bi-filetype-docx:before{content:"\f745"}.bi-filetype-exe:before{content:"\f746"}.bi-filetype-gif:before{content:"\f747"}.bi-filetype-heic:before{content:"\f748"}.bi-filetype-html:before{content:"\f749"}.bi-filetype-java:before{content:"\f74a"}.bi-filetype-jpg:before{content:"\f74b"}.bi-filetype-js:before{content:"\f74c"}.bi-filetype-jsx:before{content:"\f74d"}.bi-filetype-key:before{content:"\f74e"}.bi-filetype-m4p:before{content:"\f74f"}.bi-filetype-md:before{content:"\f750"}.bi-filetype-mdx:before{content:"\f751"}.bi-filetype-mov:before{content:"\f752"}.bi-filetype-mp3:before{content:"\f753"}.bi-filetype-mp4:before{content:"\f754"}.bi-filetype-otf:before{content:"\f755"}.bi-filetype-pdf:before{content:"\f756"}.bi-filetype-php:before{content:"\f757"}.bi-filetype-png:before{content:"\f758"}.bi-filetype-ppt:before{content:"\f75a"}.bi-filetype-psd:before{content:"\f75b"}.bi-filetype-py:before{content:"\f75c"}.bi-filetype-raw:before{content:"\f75d"}.bi-filetype-rb:before{content:"\f75e"}.bi-filetype-sass:before{content:"\f75f"}.bi-filetype-scss:before{content:"\f760"}.bi-filetype-sh:before{content:"\f761"}.bi-filetype-svg:before{content:"\f762"}.bi-filetype-tiff:before{content:"\f763"}.bi-filetype-tsx:before{content:"\f764"}.bi-filetype-ttf:before{content:"\f765"}.bi-filetype-txt:before{content:"\f766"}.bi-filetype-wav:before{content:"\f767"}.bi-filetype-woff:before{content:"\f768"}.bi-filetype-xls:before{content:"\f76a"}.bi-filetype-xml:before{content:"\f76b"}.bi-filetype-yml:before{content:"\f76c"}.bi-heart-arrow:before{content:"\f76d"}.bi-heart-pulse-fill:before{content:"\f76e"}.bi-heart-pulse:before{content:"\f76f"}.bi-heartbreak-fill:before{content:"\f770"}.bi-heartbreak:before{content:"\f771"}.bi-hearts:before{content:"\f772"}.bi-hospital-fill:before{content:"\f773"}.bi-hospital:before{content:"\f774"}.bi-house-heart-fill:before{content:"\f775"}.bi-house-heart:before{content:"\f776"}.bi-incognito:before{content:"\f777"}.bi-magnet-fill:before{content:"\f778"}.bi-magnet:before{content:"\f779"}.bi-person-heart:before{content:"\f77a"}.bi-person-hearts:before{content:"\f77b"}.bi-phone-flip:before{content:"\f77c"}.bi-plugin:before{content:"\f77d"}.bi-postage-fill:before{content:"\f77e"}.bi-postage-heart-fill:before{content:"\f77f"}.bi-postage-heart:before{content:"\f780"}.bi-postage:before{content:"\f781"}.bi-postcard-fill:before{content:"\f782"}.bi-postcard-heart-fill:before{content:"\f783"}.bi-postcard-heart:before{content:"\f784"}.bi-postcard:before{content:"\f785"}.bi-search-heart-fill:before{content:"\f786"}.bi-search-heart:before{content:"\f787"}.bi-sliders2-vertical:before{content:"\f788"}.bi-sliders2:before{content:"\f789"}.bi-trash3-fill:before{content:"\f78a"}.bi-trash3:before{content:"\f78b"}.bi-valentine:before{content:"\f78c"}.bi-valentine2:before{content:"\f78d"}.bi-wrench-adjustable-circle-fill:before{content:"\f78e"}.bi-wrench-adjustable-circle:before{content:"\f78f"}.bi-wrench-adjustable:before{content:"\f790"}.bi-filetype-json:before{content:"\f791"}.bi-filetype-pptx:before{content:"\f792"}.bi-filetype-xlsx:before{content:"\f793"}.bi-1-circle-fill:before{content:"\f796"}.bi-1-circle:before{content:"\f797"}.bi-1-square-fill:before{content:"\f798"}.bi-1-square:before{content:"\f799"}.bi-2-circle-fill:before{content:"\f79c"}.bi-2-circle:before{content:"\f79d"}.bi-2-square-fill:before{content:"\f79e"}.bi-2-square:before{content:"\f79f"}.bi-3-circle-fill:before{content:"\f7a2"}.bi-3-circle:before{content:"\f7a3"}.bi-3-square-fill:before{content:"\f7a4"}.bi-3-square:before{content:"\f7a5"}.bi-4-circle-fill:before{content:"\f7a8"}.bi-4-circle:before{content:"\f7a9"}.bi-4-square-fill:before{content:"\f7aa"}.bi-4-square:before{content:"\f7ab"}.bi-5-circle-fill:before{content:"\f7ae"}.bi-5-circle:before{content:"\f7af"}.bi-5-square-fill:before{content:"\f7b0"}.bi-5-square:before{content:"\f7b1"}.bi-6-circle-fill:before{content:"\f7b4"}.bi-6-circle:before{content:"\f7b5"}.bi-6-square-fill:before{content:"\f7b6"}.bi-6-square:before{content:"\f7b7"}.bi-7-circle-fill:before{content:"\f7ba"}.bi-7-circle:before{content:"\f7bb"}.bi-7-square-fill:before{content:"\f7bc"}.bi-7-square:before{content:"\f7bd"}.bi-8-circle-fill:before{content:"\f7c0"}.bi-8-circle:before{content:"\f7c1"}.bi-8-square-fill:before{content:"\f7c2"}.bi-8-square:before{content:"\f7c3"}.bi-9-circle-fill:before{content:"\f7c6"}.bi-9-circle:before{content:"\f7c7"}.bi-9-square-fill:before{content:"\f7c8"}.bi-9-square:before{content:"\f7c9"}.bi-airplane-engines-fill:before{content:"\f7ca"}.bi-airplane-engines:before{content:"\f7cb"}.bi-airplane-fill:before{content:"\f7cc"}.bi-airplane:before{content:"\f7cd"}.bi-alexa:before{content:"\f7ce"}.bi-alipay:before{content:"\f7cf"}.bi-android:before{content:"\f7d0"}.bi-android2:before{content:"\f7d1"}.bi-box-fill:before{content:"\f7d2"}.bi-box-seam-fill:before{content:"\f7d3"}.bi-browser-chrome:before{content:"\f7d4"}.bi-browser-edge:before{content:"\f7d5"}.bi-browser-firefox:before{content:"\f7d6"}.bi-browser-safari:before{content:"\f7d7"}.bi-c-circle-fill:before{content:"\f7da"}.bi-c-circle:before{content:"\f7db"}.bi-c-square-fill:before{content:"\f7dc"}.bi-c-square:before{content:"\f7dd"}.bi-capsule-pill:before{content:"\f7de"}.bi-capsule:before{content:"\f7df"}.bi-car-front-fill:before{content:"\f7e0"}.bi-car-front:before{content:"\f7e1"}.bi-cassette-fill:before{content:"\f7e2"}.bi-cassette:before{content:"\f7e3"}.bi-cc-circle-fill:before{content:"\f7e6"}.bi-cc-circle:before{content:"\f7e7"}.bi-cc-square-fill:before{content:"\f7e8"}.bi-cc-square:before{content:"\f7e9"}.bi-cup-hot-fill:before{content:"\f7ea"}.bi-cup-hot:before{content:"\f7eb"}.bi-currency-rupee:before{content:"\f7ec"}.bi-dropbox:before{content:"\f7ed"}.bi-escape:before{content:"\f7ee"}.bi-fast-forward-btn-fill:before{content:"\f7ef"}.bi-fast-forward-btn:before{content:"\f7f0"}.bi-fast-forward-circle-fill:before{content:"\f7f1"}.bi-fast-forward-circle:before{content:"\f7f2"}.bi-fast-forward-fill:before{content:"\f7f3"}.bi-fast-forward:before{content:"\f7f4"}.bi-filetype-sql:before{content:"\f7f5"}.bi-fire:before{content:"\f7f6"}.bi-google-play:before{content:"\f7f7"}.bi-h-circle-fill:before{content:"\f7fa"}.bi-h-circle:before{content:"\f7fb"}.bi-h-square-fill:before{content:"\f7fc"}.bi-h-square:before{content:"\f7fd"}.bi-indent:before{content:"\f7fe"}.bi-lungs-fill:before{content:"\f7ff"}.bi-lungs:before{content:"\f800"}.bi-microsoft-teams:before{content:"\f801"}.bi-p-circle-fill:before{content:"\f804"}.bi-p-circle:before{content:"\f805"}.bi-p-square-fill:before{content:"\f806"}.bi-p-square:before{content:"\f807"}.bi-pass-fill:before{content:"\f808"}.bi-pass:before{content:"\f809"}.bi-prescription:before{content:"\f80a"}.bi-prescription2:before{content:"\f80b"}.bi-r-circle-fill:before{content:"\f80e"}.bi-r-circle:before{content:"\f80f"}.bi-r-square-fill:before{content:"\f810"}.bi-r-square:before{content:"\f811"}.bi-repeat-1:before{content:"\f812"}.bi-repeat:before{content:"\f813"}.bi-rewind-btn-fill:before{content:"\f814"}.bi-rewind-btn:before{content:"\f815"}.bi-rewind-circle-fill:before{content:"\f816"}.bi-rewind-circle:before{content:"\f817"}.bi-rewind-fill:before{content:"\f818"}.bi-rewind:before{content:"\f819"}.bi-train-freight-front-fill:before{content:"\f81a"}.bi-train-freight-front:before{content:"\f81b"}.bi-train-front-fill:before{content:"\f81c"}.bi-train-front:before{content:"\f81d"}.bi-train-lightrail-front-fill:before{content:"\f81e"}.bi-train-lightrail-front:before{content:"\f81f"}.bi-truck-front-fill:before{content:"\f820"}.bi-truck-front:before{content:"\f821"}.bi-ubuntu:before{content:"\f822"}.bi-unindent:before{content:"\f823"}.bi-unity:before{content:"\f824"}.bi-universal-access-circle:before{content:"\f825"}.bi-universal-access:before{content:"\f826"}.bi-virus:before{content:"\f827"}.bi-virus2:before{content:"\f828"}.bi-wechat:before{content:"\f829"}.bi-yelp:before{content:"\f82a"}.bi-sign-stop-fill:before{content:"\f82b"}.bi-sign-stop-lights-fill:before{content:"\f82c"}.bi-sign-stop-lights:before{content:"\f82d"}.bi-sign-stop:before{content:"\f82e"}.bi-sign-turn-left-fill:before{content:"\f82f"}.bi-sign-turn-left:before{content:"\f830"}.bi-sign-turn-right-fill:before{content:"\f831"}.bi-sign-turn-right:before{content:"\f832"}.bi-sign-turn-slight-left-fill:before{content:"\f833"}.bi-sign-turn-slight-left:before{content:"\f834"}.bi-sign-turn-slight-right-fill:before{content:"\f835"}.bi-sign-turn-slight-right:before{content:"\f836"}.bi-sign-yield-fill:before{content:"\f837"}.bi-sign-yield:before{content:"\f838"}.bi-ev-station-fill:before{content:"\f839"}.bi-ev-station:before{content:"\f83a"}.bi-fuel-pump-diesel-fill:before{content:"\f83b"}.bi-fuel-pump-diesel:before{content:"\f83c"}.bi-fuel-pump-fill:before{content:"\f83d"}.bi-fuel-pump:before{content:"\f83e"}.bi-0-circle-fill:before{content:"\f83f"}.bi-0-circle:before{content:"\f840"}.bi-0-square-fill:before{content:"\f841"}.bi-0-square:before{content:"\f842"}.bi-rocket-fill:before{content:"\f843"}.bi-rocket-takeoff-fill:before{content:"\f844"}.bi-rocket-takeoff:before{content:"\f845"}.bi-rocket:before{content:"\f846"}.bi-stripe:before{content:"\f847"}.bi-subscript:before{content:"\f848"}.bi-superscript:before{content:"\f849"}.bi-trello:before{content:"\f84a"}.bi-envelope-at-fill:before{content:"\f84b"}.bi-envelope-at:before{content:"\f84c"}.bi-regex:before{content:"\f84d"}.bi-text-wrap:before{content:"\f84e"}.bi-sign-dead-end-fill:before{content:"\f84f"}.bi-sign-dead-end:before{content:"\f850"}.bi-sign-do-not-enter-fill:before{content:"\f851"}.bi-sign-do-not-enter:before{content:"\f852"}.bi-sign-intersection-fill:before{content:"\f853"}.bi-sign-intersection-side-fill:before{content:"\f854"}.bi-sign-intersection-side:before{content:"\f855"}.bi-sign-intersection-t-fill:before{content:"\f856"}.bi-sign-intersection-t:before{content:"\f857"}.bi-sign-intersection-y-fill:before{content:"\f858"}.bi-sign-intersection-y:before{content:"\f859"}.bi-sign-intersection:before{content:"\f85a"}.bi-sign-merge-left-fill:before{content:"\f85b"}.bi-sign-merge-left:before{content:"\f85c"}.bi-sign-merge-right-fill:before{content:"\f85d"}.bi-sign-merge-right:before{content:"\f85e"}.bi-sign-no-left-turn-fill:before{content:"\f85f"}.bi-sign-no-left-turn:before{content:"\f860"}.bi-sign-no-parking-fill:before{content:"\f861"}.bi-sign-no-parking:before{content:"\f862"}.bi-sign-no-right-turn-fill:before{content:"\f863"}.bi-sign-no-right-turn:before{content:"\f864"}.bi-sign-railroad-fill:before{content:"\f865"}.bi-sign-railroad:before{content:"\f866"}.bi-building-add:before{content:"\f867"}.bi-building-check:before{content:"\f868"}.bi-building-dash:before{content:"\f869"}.bi-building-down:before{content:"\f86a"}.bi-building-exclamation:before{content:"\f86b"}.bi-building-fill-add:before{content:"\f86c"}.bi-building-fill-check:before{content:"\f86d"}.bi-building-fill-dash:before{content:"\f86e"}.bi-building-fill-down:before{content:"\f86f"}.bi-building-fill-exclamation:before{content:"\f870"}.bi-building-fill-gear:before{content:"\f871"}.bi-building-fill-lock:before{content:"\f872"}.bi-building-fill-slash:before{content:"\f873"}.bi-building-fill-up:before{content:"\f874"}.bi-building-fill-x:before{content:"\f875"}.bi-building-fill:before{content:"\f876"}.bi-building-gear:before{content:"\f877"}.bi-building-lock:before{content:"\f878"}.bi-building-slash:before{content:"\f879"}.bi-building-up:before{content:"\f87a"}.bi-building-x:before{content:"\f87b"}.bi-buildings-fill:before{content:"\f87c"}.bi-buildings:before{content:"\f87d"}.bi-bus-front-fill:before{content:"\f87e"}.bi-bus-front:before{content:"\f87f"}.bi-ev-front-fill:before{content:"\f880"}.bi-ev-front:before{content:"\f881"}.bi-globe-americas:before{content:"\f882"}.bi-globe-asia-australia:before{content:"\f883"}.bi-globe-central-south-asia:before{content:"\f884"}.bi-globe-europe-africa:before{content:"\f885"}.bi-house-add-fill:before{content:"\f886"}.bi-house-add:before{content:"\f887"}.bi-house-check-fill:before{content:"\f888"}.bi-house-check:before{content:"\f889"}.bi-house-dash-fill:before{content:"\f88a"}.bi-house-dash:before{content:"\f88b"}.bi-house-down-fill:before{content:"\f88c"}.bi-house-down:before{content:"\f88d"}.bi-house-exclamation-fill:before{content:"\f88e"}.bi-house-exclamation:before{content:"\f88f"}.bi-house-gear-fill:before{content:"\f890"}.bi-house-gear:before{content:"\f891"}.bi-house-lock-fill:before{content:"\f892"}.bi-house-lock:before{content:"\f893"}.bi-house-slash-fill:before{content:"\f894"}.bi-house-slash:before{content:"\f895"}.bi-house-up-fill:before{content:"\f896"}.bi-house-up:before{content:"\f897"}.bi-house-x-fill:before{content:"\f898"}.bi-house-x:before{content:"\f899"}.bi-person-add:before{content:"\f89a"}.bi-person-down:before{content:"\f89b"}.bi-person-exclamation:before{content:"\f89c"}.bi-person-fill-add:before{content:"\f89d"}.bi-person-fill-check:before{content:"\f89e"}.bi-person-fill-dash:before{content:"\f89f"}.bi-person-fill-down:before{content:"\f8a0"}.bi-person-fill-exclamation:before{content:"\f8a1"}.bi-person-fill-gear:before{content:"\f8a2"}.bi-person-fill-lock:before{content:"\f8a3"}.bi-person-fill-slash:before{content:"\f8a4"}.bi-person-fill-up:before{content:"\f8a5"}.bi-person-fill-x:before{content:"\f8a6"}.bi-person-gear:before{content:"\f8a7"}.bi-person-lock:before{content:"\f8a8"}.bi-person-slash:before{content:"\f8a9"}.bi-person-up:before{content:"\f8aa"}.bi-scooter:before{content:"\f8ab"}.bi-taxi-front-fill:before{content:"\f8ac"}.bi-taxi-front:before{content:"\f8ad"}.bi-amd:before{content:"\f8ae"}.bi-database-add:before{content:"\f8af"}.bi-database-check:before{content:"\f8b0"}.bi-database-dash:before{content:"\f8b1"}.bi-database-down:before{content:"\f8b2"}.bi-database-exclamation:before{content:"\f8b3"}.bi-database-fill-add:before{content:"\f8b4"}.bi-database-fill-check:before{content:"\f8b5"}.bi-database-fill-dash:before{content:"\f8b6"}.bi-database-fill-down:before{content:"\f8b7"}.bi-database-fill-exclamation:before{content:"\f8b8"}.bi-database-fill-gear:before{content:"\f8b9"}.bi-database-fill-lock:before{content:"\f8ba"}.bi-database-fill-slash:before{content:"\f8bb"}.bi-database-fill-up:before{content:"\f8bc"}.bi-database-fill-x:before{content:"\f8bd"}.bi-database-fill:before{content:"\f8be"}.bi-database-gear:before{content:"\f8bf"}.bi-database-lock:before{content:"\f8c0"}.bi-database-slash:before{content:"\f8c1"}.bi-database-up:before{content:"\f8c2"}.bi-database-x:before{content:"\f8c3"}.bi-database:before{content:"\f8c4"}.bi-houses-fill:before{content:"\f8c5"}.bi-houses:before{content:"\f8c6"}.bi-nvidia:before{content:"\f8c7"}.bi-person-vcard-fill:before{content:"\f8c8"}.bi-person-vcard:before{content:"\f8c9"}.bi-sina-weibo:before{content:"\f8ca"}.bi-tencent-qq:before{content:"\f8cb"}.bi-wikipedia:before{content:"\f8cc"}.bi-alphabet-uppercase:before{content:"\f2a5"}.bi-alphabet:before{content:"\f68a"}.bi-amazon:before{content:"\f68d"}.bi-arrows-collapse-vertical:before{content:"\f690"}.bi-arrows-expand-vertical:before{content:"\f695"}.bi-arrows-vertical:before{content:"\f698"}.bi-arrows:before{content:"\f6a2"}.bi-ban-fill:before{content:"\f6a3"}.bi-ban:before{content:"\f6b6"}.bi-bing:before{content:"\f6c2"}.bi-cake:before{content:"\f6e0"}.bi-cake2:before{content:"\f6ed"}.bi-cookie:before{content:"\f6ee"}.bi-copy:before{content:"\f759"}.bi-crosshair:before{content:"\f769"}.bi-crosshair2:before{content:"\f794"}.bi-emoji-astonished-fill:before{content:"\f795"}.bi-emoji-astonished:before{content:"\f79a"}.bi-emoji-grimace-fill:before{content:"\f79b"}.bi-emoji-grimace:before{content:"\f7a0"}.bi-emoji-grin-fill:before{content:"\f7a1"}.bi-emoji-grin:before{content:"\f7a6"}.bi-emoji-surprise-fill:before{content:"\f7a7"}.bi-emoji-surprise:before{content:"\f7ac"}.bi-emoji-tear-fill:before{content:"\f7ad"}.bi-emoji-tear:before{content:"\f7b2"}.bi-envelope-arrow-down-fill:before{content:"\f7b3"}.bi-envelope-arrow-down:before{content:"\f7b8"}.bi-envelope-arrow-up-fill:before{content:"\f7b9"}.bi-envelope-arrow-up:before{content:"\f7be"}.bi-feather:before{content:"\f7bf"}.bi-feather2:before{content:"\f7c4"}.bi-floppy-fill:before{content:"\f7c5"}.bi-floppy:before{content:"\f7d8"}.bi-floppy2-fill:before{content:"\f7d9"}.bi-floppy2:before{content:"\f7e4"}.bi-gitlab:before{content:"\f7e5"}.bi-highlighter:before{content:"\f7f8"}.bi-marker-tip:before{content:"\f802"}.bi-nvme-fill:before{content:"\f803"}.bi-nvme:before{content:"\f80c"}.bi-opencollective:before{content:"\f80d"}.bi-pci-card-network:before{content:"\f8cd"}.bi-pci-card-sound:before{content:"\f8ce"}.bi-radar:before{content:"\f8cf"}.bi-send-arrow-down-fill:before{content:"\f8d0"}.bi-send-arrow-down:before{content:"\f8d1"}.bi-send-arrow-up-fill:before{content:"\f8d2"}.bi-send-arrow-up:before{content:"\f8d3"}.bi-sim-slash-fill:before{content:"\f8d4"}.bi-sim-slash:before{content:"\f8d5"}.bi-sourceforge:before{content:"\f8d6"}.bi-substack:before{content:"\f8d7"}.bi-threads-fill:before{content:"\f8d8"}.bi-threads:before{content:"\f8d9"}.bi-transparency:before{content:"\f8da"}.bi-twitter-x:before{content:"\f8db"}.bi-type-h4:before{content:"\f8dc"}.bi-type-h5:before{content:"\f8dd"}.bi-type-h6:before{content:"\f8de"}.bi-backpack-fill:before{content:"\f8df"}.bi-backpack:before{content:"\f8e0"}.bi-backpack2-fill:before{content:"\f8e1"}.bi-backpack2:before{content:"\f8e2"}.bi-backpack3-fill:before{content:"\f8e3"}.bi-backpack3:before{content:"\f8e4"}.bi-backpack4-fill:before{content:"\f8e5"}.bi-backpack4:before{content:"\f8e6"}.bi-brilliance:before{content:"\f8e7"}.bi-cake-fill:before{content:"\f8e8"}.bi-cake2-fill:before{content:"\f8e9"}.bi-duffle-fill:before{content:"\f8ea"}.bi-duffle:before{content:"\f8eb"}.bi-exposure:before{content:"\f8ec"}.bi-gender-neuter:before{content:"\f8ed"}.bi-highlights:before{content:"\f8ee"}.bi-luggage-fill:before{content:"\f8ef"}.bi-luggage:before{content:"\f8f0"}.bi-mailbox-flag:before{content:"\f8f1"}.bi-mailbox2-flag:before{content:"\f8f2"}.bi-noise-reduction:before{content:"\f8f3"}.bi-passport-fill:before{content:"\f8f4"}.bi-passport:before{content:"\f8f5"}.bi-person-arms-up:before{content:"\f8f6"}.bi-person-raised-hand:before{content:"\f8f7"}.bi-person-standing-dress:before{content:"\f8f8"}.bi-person-standing:before{content:"\f8f9"}.bi-person-walking:before{content:"\f8fa"}.bi-person-wheelchair:before{content:"\f8fb"}.bi-shadows:before{content:"\f8fc"}.bi-suitcase-fill:before{content:"\f8fd"}.bi-suitcase-lg-fill:before{content:"\f8fe"}.bi-suitcase-lg:before{content:"\f8ff"}.bi-suitcase:before{content:"\f900"}.bi-suitcase2-fill:before{content:"\f901"}.bi-suitcase2:before{content:"\f902"}.bi-vignette:before{content:"\f903"}:root,[data-bs-theme=light]{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #0d6efd;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-primary-rgb: 13, 110, 253;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-primary-text-emphasis: #052c65;--bs-secondary-text-emphasis: #2b2f32;--bs-success-text-emphasis: #0a3622;--bs-info-text-emphasis: #055160;--bs-warning-text-emphasis: #664d03;--bs-danger-text-emphasis: #58151c;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #cfe2ff;--bs-secondary-bg-subtle: #e2e3e5;--bs-success-bg-subtle: #d1e7dd;--bs-info-bg-subtle: #cff4fc;--bs-warning-bg-subtle: #fff3cd;--bs-danger-bg-subtle: #f8d7da;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #9ec5fe;--bs-secondary-border-subtle: #c4c8cb;--bs-success-border-subtle: #a3cfbb;--bs-info-border-subtle: #9eeaf9;--bs-warning-border-subtle: #ffe69c;--bs-danger-border-subtle: #f1aeb5;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 37, 41, .75);--bs-secondary-color-rgb: 33, 37, 41;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(33, 37, 41, .5);--bs-tertiary-color-rgb: 33, 37, 41;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #0d6efd;--bs-link-color-rgb: 13, 110, 253;--bs-link-decoration: underline;--bs-link-hover-color: #0a58ca;--bs-link-hover-color-rgb: 10, 88, 202;--bs-code-color: #d63384;--bs-highlight-color: #212529;--bs-highlight-bg: #fff3cd;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, .175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, .075);--bs-focus-ring-width: .25rem;--bs-focus-ring-opacity: .25;--bs-focus-ring-color: rgba(13, 110, 253, .25);--bs-form-valid-color: #198754;--bs-form-valid-border-color: #198754;--bs-form-invalid-color: #dc3545;--bs-form-invalid-border-color: #dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, .75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, .5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: #2b3035;--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: #6ea8fe;--bs-secondary-text-emphasis: #a7acb1;--bs-success-text-emphasis: #75b798;--bs-info-text-emphasis: #6edff6;--bs-warning-text-emphasis: #ffda6a;--bs-danger-text-emphasis: #ea868f;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #031633;--bs-secondary-bg-subtle: #161719;--bs-success-bg-subtle: #051b11;--bs-info-bg-subtle: #032830;--bs-warning-bg-subtle: #332701;--bs-danger-bg-subtle: #2c0b0e;--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: #084298;--bs-secondary-border-subtle: #41464b;--bs-success-border-subtle: #0f5132;--bs-info-border-subtle: #087990;--bs-warning-border-subtle: #997404;--bs-danger-border-subtle: #842029;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: #6ea8fe;--bs-link-hover-color: #8bb9fe;--bs-link-color-rgb: 110, 168, 254;--bs-link-hover-color-rgb: 139, 185, 254;--bs-code-color: #e685b5;--bs-highlight-color: #dee2e6;--bs-highlight-bg: #664d03;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, .15);--bs-form-valid-color: #75b798;--bs-form-valid-border-color: #75b798;--bs-form-invalid-color: #ea868f;--bs-form-invalid-border-color: #ea868f}*,*:before,*:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1768px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: var(--bs-emphasis-color);--bs-table-bg: var(--bs-body-bg);--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: transparent;--bs-table-striped-color: var(--bs-emphasis-color);--bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), .05);--bs-table-active-color: var(--bs-emphasis-color);--bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), .1);--bs-table-hover-color: var(--bs-emphasis-color);--bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), .075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #cfe2ff;--bs-table-border-color: #a6b5cc;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #e2e3e5;--bs-table-border-color: #b5b6b7;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d1e7dd;--bs-table-border-color: #a7b9b1;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #cff4fc;--bs-table-border-color: #a6c3ca;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #fff3cd;--bs-table-border-color: #ccc2a4;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f8d7da;--bs-table-border-color: #c6acae;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: #c6c7c8;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #212529;--bs-table-border-color: #4d5154;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg: var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:focus~label:after,.form-floating>.form-control:not(:placeholder-shown)~label:after,.form-floating>.form-control-plaintext~label:after,.form-floating>.form-select~label:after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label:after,.form-floating>.form-control:disabled~label:after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3.75rem + 1.5em)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3.75rem + 1.5em)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: .75rem;--bs-btn-padding-y: .375rem;--bs-btn-font-family: ;--bs-btn-font-size: 1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: var(--bs-border-radius);--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);--bs-btn-disabled-opacity: .65;--bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0b5ed7;--bs-btn-hover-border-color: #0a58ca;--bs-btn-focus-shadow-rgb: 49, 132, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0a58ca;--bs-btn-active-border-color: #0a53be;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #0d6efd;--bs-btn-disabled-border-color: #0d6efd}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5c636a;--bs-btn-hover-border-color: #565e64;--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565e64;--bs-btn-active-border-color: #51585e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #157347;--bs-btn-hover-border-color: #146c43;--bs-btn-focus-shadow-rgb: 60, 153, 110;--bs-btn-active-color: #fff;--bs-btn-active-bg: #146c43;--bs-btn-active-border-color: #13653f;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #198754;--bs-btn-disabled-border-color: #198754}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #31d2f2;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffca2c;--bs-btn-hover-border-color: #ffc720;--bs-btn-focus-shadow-rgb: 217, 164, 6;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd39;--bs-btn-active-border-color: #ffc720;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffc107;--bs-btn-disabled-border-color: #ffc107}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #bb2d3b;--bs-btn-hover-border-color: #b02a37;--bs-btn-focus-shadow-rgb: 225, 83, 97;--bs-btn-active-color: #fff;--bs-btn-active-bg: #b02a37;--bs-btn-active-border-color: #a52834;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #dc3545;--bs-btn-disabled-border-color: #dc3545}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #424649;--bs-btn-hover-border-color: #373b3e;--bs-btn-focus-shadow-rgb: 66, 70, 73;--bs-btn-active-color: #fff;--bs-btn-active-bg: #4d5154;--bs-btn-active-border-color: #373b3e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #212529;--bs-btn-disabled-border-color: #212529}.btn-outline-primary{--bs-btn-color: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0d6efd;--bs-btn-hover-border-color: #0d6efd;--bs-btn-focus-shadow-rgb: 13, 110, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0d6efd;--bs-btn-active-border-color: #0d6efd;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #0d6efd;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0d6efd;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #198754;--bs-btn-hover-border-color: #198754;--bs-btn-focus-shadow-rgb: 25, 135, 84;--bs-btn-active-color: #fff;--bs-btn-active-bg: #198754;--bs-btn-active-border-color: #198754;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #198754;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #198754;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffc107;--bs-btn-hover-border-color: #ffc107;--bs-btn-focus-shadow-rgb: 255, 193, 7;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffc107;--bs-btn-active-border-color: #ffc107;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #ffc107;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffc107;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #dc3545;--bs-btn-hover-border-color: #dc3545;--bs-btn-focus-shadow-rgb: 220, 53, 69;--bs-btn-active-color: #fff;--bs-btn-active-bg: #dc3545;--bs-btn-active-border-color: #dc3545;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #dc3545;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dc3545;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #212529;--bs-btn-hover-border-color: #212529;--bs-btn-focus-shadow-rgb: 33, 37, 41;--bs-btn-active-color: #fff;--bs-btn-active-bg: #212529;--bs-btn-active-border-color: #212529;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #212529;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #212529;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 49, 132, 253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.25rem;--bs-btn-border-radius: var(--bs-border-radius-lg)}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .875rem;--bs-btn-border-radius: var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: .5rem;--bs-dropdown-spacer: .125rem;--bs-dropdown-font-size: 1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: .5rem;--bs-dropdown-box-shadow: var(--bs-box-shadow);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: .25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: .5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, .15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), .65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), .8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), .3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), .15);--bs-navbar-toggler-border-radius: var(--bs-border-radius);--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgba(255, 255, 255, .55);--bs-navbar-hover-color: rgba(255, 255, 255, .75);--bs-navbar-disabled-color: rgba(255, 255, 255, .25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: .5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: .5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: .75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;inset:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform .2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #86b7fe;--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text-emphasis);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion: reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: .5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: .75rem;--bs-pagination-padding-y: .375rem;--bs-pagination-font-size: 1rem;--bs-pagination-color: var(--bs-link-color);--bs-pagination-bg: var(--bs-body-bg);--bs-pagination-border-width: var(--bs-border-width);--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: var(--bs-border-radius);--bs-pagination-hover-color: var(--bs-link-hover-color);--bs-pagination-hover-bg: var(--bs-tertiary-bg);--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: var(--bs-link-hover-color);--bs-pagination-focus-bg: var(--bs-secondary-bg);--bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #0d6efd;--bs-pagination-active-border-color: #0d6efd;--bs-pagination-disabled-color: var(--bs-secondary-color);--bs-pagination-disabled-bg: var(--bs-secondary-bg);--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: .75rem;--bs-pagination-font-size: 1.25rem;--bs-pagination-border-radius: var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x: .5rem;--bs-pagination-padding-y: .25rem;--bs-pagination-font-size: .875rem;--bs-pagination-border-radius: var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x: .65em;--bs-badge-padding-y: .35em;--bs-badge-font-size: .75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius: var(--bs-border-radius);--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size: .75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #0d6efd;--bs-progress-bar-transition: width .6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #0d6efd;--bs-list-group-active-border-color: #0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: .5;--bs-btn-close-hover-opacity: .75;--bs-btn-close-focus-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: .25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white,[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: .75rem;--bs-toast-padding-y: .5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size: .875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), .85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), .85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: .5rem;--bs-modal-color: ;--bs-modal-bg: var(--bs-body-bg);--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: var(--bs-border-radius-lg);--bs-modal-box-shadow: var(--bs-box-shadow-sm);--bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: var(--bs-border-width);--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: .5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: .5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media (min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media (min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: .5rem;--bs-tooltip-padding-y: .25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size: .875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: .9;--bs-tooltip-arrow-width: .8rem;--bs-tooltip-arrow-height: .4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size: .875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow: var(--bs-box-shadow);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: .5rem;--bs-popover-header-font-size: 1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: .5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow:before,.popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-border-width: .25em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: .2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);--bs-offcanvas-transition: transform .3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media (max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 575.98px) and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media (min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 767.98px) and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media (min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 991.98px) and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media (min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media (min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media (min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity, 1))}.text-bg-secondary{color:#fff;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity, 1))}.text-bg-success{color:#fff;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity, 1))}.text-bg-info{color:#000;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity, 1))}.text-bg-warning{color:#000;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity, 1))}.text-bg-danger{color:#fff;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity, 1))}.text-bg-light{color:#000;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity, 1))}.text-bg-dark{color:#fff;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity, 1))}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity, 1));text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity, 1))}.link-primary:hover,.link-primary:focus{color:RGBA(10,88,202,var(--bs-link-opacity, 1));text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity, 1))}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity, 1));text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity, 1))}.link-secondary:hover,.link-secondary:focus{color:RGBA(86,94,100,var(--bs-link-opacity, 1));text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity, 1))}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity, 1));text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity, 1))}.link-success:hover,.link-success:focus{color:RGBA(20,108,67,var(--bs-link-opacity, 1));text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity, 1))}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity, 1));text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity, 1))}.link-info:hover,.link-info:focus{color:RGBA(61,213,243,var(--bs-link-opacity, 1));text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity, 1))}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity, 1));text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity, 1))}.link-warning:hover,.link-warning:focus{color:RGBA(255,205,57,var(--bs-link-opacity, 1));text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity, 1))}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity, 1));text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity, 1))}.link-danger:hover,.link-danger:focus{color:RGBA(176,42,55,var(--bs-link-opacity, 1));text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity, 1))}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity, 1));text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity, 1))}.link-light:hover,.link-light:focus{color:RGBA(249,250,251,var(--bs-link-opacity, 1));text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity, 1))}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity, 1));text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity, 1))}.link-dark:hover,.link-dark:focus{color:RGBA(26,30,33,var(--bs-link-opacity, 1));text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity, 1))}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, 1));text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, 1))}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, .75));text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, .75))}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, .5));text-underline-offset:.25em;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-bottom{vertical-align:text-bottom}.align-text-top{vertical-align:text-top}.float-start{float:left}.float-end{float:right}.float-none{float:none}.object-fit-contain{object-fit:contain}.object-fit-cover{object-fit:cover}.object-fit-fill{object-fit:fill}.object-fit-scale{object-fit:scale-down}.object-fit-none{object-fit:none}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-visible{overflow-x:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-visible{overflow-y:visible}.overflow-y-scroll{overflow-y:scroll}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-block{display:block}.d-grid{display:grid}.d-inline-grid{display:inline-grid}.d-table{display:table}.d-table-row{display:table-row}.d-table-cell{display:table-cell}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-none{display:none}.shadow{box-shadow:var(--bs-box-shadow)}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)}.shadow-none{box-shadow:none}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.top-0{top:0}.top-50{top:50%}.top-100{top:100%}.bottom-0{bottom:0}.bottom-50{bottom:50%}.bottom-100{bottom:100%}.start-0{left:0}.start-50{left:50%}.start-100{left:100%}.end-0{right:0}.end-50{right:50%}.end-100{right:100%}.translate-middle{transform:translate(-50%,-50%)}.translate-middle-x{transform:translate(-50%)}.translate-middle-y{transform:translateY(-50%)}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-0{border:0}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-top-0{border-top:0}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-end-0{border-right:0}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-bottom-0{border-bottom:0}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-start-0{border-left:0}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)}.border-success-subtle{border-color:var(--bs-success-border-subtle)}.border-info-subtle{border-color:var(--bs-info-border-subtle)}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)}.border-light-subtle{border-color:var(--bs-light-border-subtle)}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)}.border-1{border-width:1px}.border-2{border-width:2px}.border-3{border-width:3px}.border-4{border-width:4px}.border-5{border-width:5px}.border-opacity-10{--bs-border-opacity: .1}.border-opacity-25{--bs-border-opacity: .25}.border-opacity-50{--bs-border-opacity: .5}.border-opacity-75{--bs-border-opacity: .75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25%}.w-50{width:50%}.w-75{width:75%}.w-100{width:100%}.w-auto{width:auto}.mw-100{max-width:100%}.vw-100{width:100vw}.min-vw-100{min-width:100vw}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.h-auto{height:auto}.mh-100{max-height:100%}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.flex-fill{flex:1 1 auto}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.align-content-start{align-content:flex-start}.align-content-end{align-content:flex-end}.align-content-center{align-content:center}.align-content-between{align-content:space-between}.align-content-around{align-content:space-around}.align-content-stretch{align-content:stretch}.align-self-auto{align-self:auto}.align-self-start{align-self:flex-start}.align-self-end{align-self:flex-end}.align-self-center{align-self:center}.align-self-baseline{align-self:baseline}.align-self-stretch{align-self:stretch}.order-first{order:-1}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-last{order:6}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:1rem}.m-4{margin:1.5rem}.m-5{margin:3rem}.m-auto{margin:auto}.mx-0{margin-right:0;margin-left:0}.mx-1{margin-right:.25rem;margin-left:.25rem}.mx-2{margin-right:.5rem;margin-left:.5rem}.mx-3{margin-right:1rem;margin-left:1rem}.mx-4{margin-right:1.5rem;margin-left:1.5rem}.mx-5{margin-right:3rem;margin-left:3rem}.mx-auto{margin-right:auto;margin-left:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:1rem;margin-bottom:1rem}.my-4{margin-top:1.5rem;margin-bottom:1.5rem}.my-5{margin-top:3rem;margin-bottom:3rem}.my-auto{margin-top:auto;margin-bottom:auto}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:1rem}.mt-4{margin-top:1.5rem}.mt-5{margin-top:3rem}.mt-auto{margin-top:auto}.me-0{margin-right:0}.me-1{margin-right:.25rem}.me-2{margin-right:.5rem}.me-3{margin-right:1rem}.me-4{margin-right:1.5rem}.me-5{margin-right:3rem}.me-auto{margin-right:auto}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:1rem}.mb-4{margin-bottom:1.5rem}.mb-5{margin-bottom:3rem}.mb-auto{margin-bottom:auto}.ms-0{margin-left:0}.ms-1{margin-left:.25rem}.ms-2{margin-left:.5rem}.ms-3{margin-left:1rem}.ms-4{margin-left:1.5rem}.ms-5{margin-left:3rem}.ms-auto{margin-left:auto}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:1rem}.p-4{padding:1.5rem}.p-5{padding:3rem}.px-0{padding-right:0;padding-left:0}.px-1{padding-right:.25rem;padding-left:.25rem}.px-2{padding-right:.5rem;padding-left:.5rem}.px-3{padding-right:1rem;padding-left:1rem}.px-4{padding-right:1.5rem;padding-left:1.5rem}.px-5{padding-right:3rem;padding-left:3rem}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:1rem;padding-bottom:1rem}.py-4{padding-top:1.5rem;padding-bottom:1.5rem}.py-5{padding-top:3rem;padding-bottom:3rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:1rem}.pt-4{padding-top:1.5rem}.pt-5{padding-top:3rem}.pe-0{padding-right:0}.pe-1{padding-right:.25rem}.pe-2{padding-right:.5rem}.pe-3{padding-right:1rem}.pe-4{padding-right:1.5rem}.pe-5{padding-right:3rem}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:1rem}.pb-4{padding-bottom:1.5rem}.pb-5{padding-bottom:3rem}.ps-0{padding-left:0}.ps-1{padding-left:.25rem}.ps-2{padding-left:.5rem}.ps-3{padding-left:1rem}.ps-4{padding-left:1.5rem}.ps-5{padding-left:3rem}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:1rem}.gap-4{gap:1.5rem}.gap-5{gap:3rem}.row-gap-0{row-gap:0}.row-gap-1{row-gap:.25rem}.row-gap-2{row-gap:.5rem}.row-gap-3{row-gap:1rem}.row-gap-4{row-gap:1.5rem}.row-gap-5{row-gap:3rem}.column-gap-0{column-gap:0}.column-gap-1{column-gap:.25rem}.column-gap-2{column-gap:.5rem}.column-gap-3{column-gap:1rem}.column-gap-4{column-gap:1.5rem}.column-gap-5{column-gap:3rem}.font-monospace{font-family:var(--bs-font-monospace)}.fs-1{font-size:calc(1.375rem + 1.5vw)}.fs-2{font-size:calc(1.325rem + .9vw)}.fs-3{font-size:calc(1.3rem + .6vw)}.fs-4{font-size:calc(1.275rem + .3vw)}.fs-5{font-size:1.25rem}.fs-6{font-size:1rem}.fst-italic{font-style:italic}.fst-normal{font-style:normal}.fw-lighter{font-weight:lighter}.fw-light{font-weight:300}.fw-normal{font-weight:400}.fw-medium{font-weight:500}.fw-semibold{font-weight:600}.fw-bold{font-weight:700}.fw-bolder{font-weight:bolder}.lh-1{line-height:1}.lh-sm{line-height:1.25}.lh-base{line-height:1.5}.lh-lg{line-height:2}.text-start{text-align:left}.text-end{text-align:right}.text-center{text-align:center}.text-decoration-none{text-decoration:none}.text-decoration-underline{text-decoration:underline}.text-decoration-line-through{text-decoration:line-through}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-wrap{white-space:normal}.text-nowrap{white-space:nowrap}.text-break{word-wrap:break-word;word-break:break-word}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color)}.text-black-50{--bs-text-opacity: 1;color:#00000080}.text-white-50{--bs-text-opacity: 1;color:#ffffff80}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color)}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color)}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color)}.text-reset{--bs-text-opacity: 1;color:inherit}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)}.text-success-emphasis{color:var(--bs-success-text-emphasis)}.text-info-emphasis{color:var(--bs-info-text-emphasis)}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)}.text-light-emphasis{color:var(--bs-light-text-emphasis)}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity: .1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity: .25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity: .5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity: .75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity, 1))}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: .1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: .25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: .5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: .75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))}.bg-transparent{--bs-bg-opacity: 1;background-color:transparent}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)}.bg-gradient{background-image:var(--bs-gradient)}.user-select-all{user-select:all}.user-select-auto{user-select:auto}.user-select-none{user-select:none}.pe-none{pointer-events:none}.pe-auto{pointer-events:auto}.rounded{border-radius:var(--bs-border-radius)}.rounded-0{border-radius:0}.rounded-1{border-radius:var(--bs-border-radius-sm)}.rounded-2{border-radius:var(--bs-border-radius)}.rounded-3{border-radius:var(--bs-border-radius-lg)}.rounded-4{border-radius:var(--bs-border-radius-xl)}.rounded-5{border-radius:var(--bs-border-radius-xxl)}.rounded-circle{border-radius:50%}.rounded-pill{border-radius:var(--bs-border-radius-pill)}.rounded-top{border-top-left-radius:var(--bs-border-radius);border-top-right-radius:var(--bs-border-radius)}.rounded-top-0{border-top-left-radius:0;border-top-right-radius:0}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm);border-top-right-radius:var(--bs-border-radius-sm)}.rounded-top-2{border-top-left-radius:var(--bs-border-radius);border-top-right-radius:var(--bs-border-radius)}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg);border-top-right-radius:var(--bs-border-radius-lg)}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl);border-top-right-radius:var(--bs-border-radius-xl)}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl);border-top-right-radius:var(--bs-border-radius-xxl)}.rounded-top-circle{border-top-left-radius:50%;border-top-right-radius:50%}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill);border-top-right-radius:var(--bs-border-radius-pill)}.rounded-end{border-top-right-radius:var(--bs-border-radius);border-bottom-right-radius:var(--bs-border-radius)}.rounded-end-0{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm);border-bottom-right-radius:var(--bs-border-radius-sm)}.rounded-end-2{border-top-right-radius:var(--bs-border-radius);border-bottom-right-radius:var(--bs-border-radius)}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg);border-bottom-right-radius:var(--bs-border-radius-lg)}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl);border-bottom-right-radius:var(--bs-border-radius-xl)}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl);border-bottom-right-radius:var(--bs-border-radius-xxl)}.rounded-end-circle{border-top-right-radius:50%;border-bottom-right-radius:50%}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill);border-bottom-right-radius:var(--bs-border-radius-pill)}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius);border-bottom-left-radius:var(--bs-border-radius)}.rounded-bottom-0{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm);border-bottom-left-radius:var(--bs-border-radius-sm)}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius);border-bottom-left-radius:var(--bs-border-radius)}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg);border-bottom-left-radius:var(--bs-border-radius-lg)}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl);border-bottom-left-radius:var(--bs-border-radius-xl)}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl);border-bottom-left-radius:var(--bs-border-radius-xxl)}.rounded-bottom-circle{border-bottom-right-radius:50%;border-bottom-left-radius:50%}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill);border-bottom-left-radius:var(--bs-border-radius-pill)}.rounded-start{border-bottom-left-radius:var(--bs-border-radius);border-top-left-radius:var(--bs-border-radius)}.rounded-start-0{border-bottom-left-radius:0;border-top-left-radius:0}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm);border-top-left-radius:var(--bs-border-radius-sm)}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius);border-top-left-radius:var(--bs-border-radius)}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg);border-top-left-radius:var(--bs-border-radius-lg)}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl);border-top-left-radius:var(--bs-border-radius-xl)}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl);border-top-left-radius:var(--bs-border-radius-xxl)}.rounded-start-circle{border-bottom-left-radius:50%;border-top-left-radius:50%}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill);border-top-left-radius:var(--bs-border-radius-pill)}.visible{visibility:visible}.invisible{visibility:hidden}.z-n1{z-index:-1}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}@media (min-width: 576px){.float-sm-start{float:left}.float-sm-end{float:right}.float-sm-none{float:none}.object-fit-sm-contain{object-fit:contain}.object-fit-sm-cover{object-fit:cover}.object-fit-sm-fill{object-fit:fill}.object-fit-sm-scale{object-fit:scale-down}.object-fit-sm-none{object-fit:none}.d-sm-inline{display:inline}.d-sm-inline-block{display:inline-block}.d-sm-block{display:block}.d-sm-grid{display:grid}.d-sm-inline-grid{display:inline-grid}.d-sm-table{display:table}.d-sm-table-row{display:table-row}.d-sm-table-cell{display:table-cell}.d-sm-flex{display:flex}.d-sm-inline-flex{display:inline-flex}.d-sm-none{display:none}.flex-sm-fill{flex:1 1 auto}.flex-sm-row{flex-direction:row}.flex-sm-column{flex-direction:column}.flex-sm-row-reverse{flex-direction:row-reverse}.flex-sm-column-reverse{flex-direction:column-reverse}.flex-sm-grow-0{flex-grow:0}.flex-sm-grow-1{flex-grow:1}.flex-sm-shrink-0{flex-shrink:0}.flex-sm-shrink-1{flex-shrink:1}.flex-sm-wrap{flex-wrap:wrap}.flex-sm-nowrap{flex-wrap:nowrap}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-sm-start{justify-content:flex-start}.justify-content-sm-end{justify-content:flex-end}.justify-content-sm-center{justify-content:center}.justify-content-sm-between{justify-content:space-between}.justify-content-sm-around{justify-content:space-around}.justify-content-sm-evenly{justify-content:space-evenly}.align-items-sm-start{align-items:flex-start}.align-items-sm-end{align-items:flex-end}.align-items-sm-center{align-items:center}.align-items-sm-baseline{align-items:baseline}.align-items-sm-stretch{align-items:stretch}.align-content-sm-start{align-content:flex-start}.align-content-sm-end{align-content:flex-end}.align-content-sm-center{align-content:center}.align-content-sm-between{align-content:space-between}.align-content-sm-around{align-content:space-around}.align-content-sm-stretch{align-content:stretch}.align-self-sm-auto{align-self:auto}.align-self-sm-start{align-self:flex-start}.align-self-sm-end{align-self:flex-end}.align-self-sm-center{align-self:center}.align-self-sm-baseline{align-self:baseline}.align-self-sm-stretch{align-self:stretch}.order-sm-first{order:-1}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-last{order:6}.m-sm-0{margin:0}.m-sm-1{margin:.25rem}.m-sm-2{margin:.5rem}.m-sm-3{margin:1rem}.m-sm-4{margin:1.5rem}.m-sm-5{margin:3rem}.m-sm-auto{margin:auto}.mx-sm-0{margin-right:0;margin-left:0}.mx-sm-1{margin-right:.25rem;margin-left:.25rem}.mx-sm-2{margin-right:.5rem;margin-left:.5rem}.mx-sm-3{margin-right:1rem;margin-left:1rem}.mx-sm-4{margin-right:1.5rem;margin-left:1.5rem}.mx-sm-5{margin-right:3rem;margin-left:3rem}.mx-sm-auto{margin-right:auto;margin-left:auto}.my-sm-0{margin-top:0;margin-bottom:0}.my-sm-1{margin-top:.25rem;margin-bottom:.25rem}.my-sm-2{margin-top:.5rem;margin-bottom:.5rem}.my-sm-3{margin-top:1rem;margin-bottom:1rem}.my-sm-4{margin-top:1.5rem;margin-bottom:1.5rem}.my-sm-5{margin-top:3rem;margin-bottom:3rem}.my-sm-auto{margin-top:auto;margin-bottom:auto}.mt-sm-0{margin-top:0}.mt-sm-1{margin-top:.25rem}.mt-sm-2{margin-top:.5rem}.mt-sm-3{margin-top:1rem}.mt-sm-4{margin-top:1.5rem}.mt-sm-5{margin-top:3rem}.mt-sm-auto{margin-top:auto}.me-sm-0{margin-right:0}.me-sm-1{margin-right:.25rem}.me-sm-2{margin-right:.5rem}.me-sm-3{margin-right:1rem}.me-sm-4{margin-right:1.5rem}.me-sm-5{margin-right:3rem}.me-sm-auto{margin-right:auto}.mb-sm-0{margin-bottom:0}.mb-sm-1{margin-bottom:.25rem}.mb-sm-2{margin-bottom:.5rem}.mb-sm-3{margin-bottom:1rem}.mb-sm-4{margin-bottom:1.5rem}.mb-sm-5{margin-bottom:3rem}.mb-sm-auto{margin-bottom:auto}.ms-sm-0{margin-left:0}.ms-sm-1{margin-left:.25rem}.ms-sm-2{margin-left:.5rem}.ms-sm-3{margin-left:1rem}.ms-sm-4{margin-left:1.5rem}.ms-sm-5{margin-left:3rem}.ms-sm-auto{margin-left:auto}.p-sm-0{padding:0}.p-sm-1{padding:.25rem}.p-sm-2{padding:.5rem}.p-sm-3{padding:1rem}.p-sm-4{padding:1.5rem}.p-sm-5{padding:3rem}.px-sm-0{padding-right:0;padding-left:0}.px-sm-1{padding-right:.25rem;padding-left:.25rem}.px-sm-2{padding-right:.5rem;padding-left:.5rem}.px-sm-3{padding-right:1rem;padding-left:1rem}.px-sm-4{padding-right:1.5rem;padding-left:1.5rem}.px-sm-5{padding-right:3rem;padding-left:3rem}.py-sm-0{padding-top:0;padding-bottom:0}.py-sm-1{padding-top:.25rem;padding-bottom:.25rem}.py-sm-2{padding-top:.5rem;padding-bottom:.5rem}.py-sm-3{padding-top:1rem;padding-bottom:1rem}.py-sm-4{padding-top:1.5rem;padding-bottom:1.5rem}.py-sm-5{padding-top:3rem;padding-bottom:3rem}.pt-sm-0{padding-top:0}.pt-sm-1{padding-top:.25rem}.pt-sm-2{padding-top:.5rem}.pt-sm-3{padding-top:1rem}.pt-sm-4{padding-top:1.5rem}.pt-sm-5{padding-top:3rem}.pe-sm-0{padding-right:0}.pe-sm-1{padding-right:.25rem}.pe-sm-2{padding-right:.5rem}.pe-sm-3{padding-right:1rem}.pe-sm-4{padding-right:1.5rem}.pe-sm-5{padding-right:3rem}.pb-sm-0{padding-bottom:0}.pb-sm-1{padding-bottom:.25rem}.pb-sm-2{padding-bottom:.5rem}.pb-sm-3{padding-bottom:1rem}.pb-sm-4{padding-bottom:1.5rem}.pb-sm-5{padding-bottom:3rem}.ps-sm-0{padding-left:0}.ps-sm-1{padding-left:.25rem}.ps-sm-2{padding-left:.5rem}.ps-sm-3{padding-left:1rem}.ps-sm-4{padding-left:1.5rem}.ps-sm-5{padding-left:3rem}.gap-sm-0{gap:0}.gap-sm-1{gap:.25rem}.gap-sm-2{gap:.5rem}.gap-sm-3{gap:1rem}.gap-sm-4{gap:1.5rem}.gap-sm-5{gap:3rem}.row-gap-sm-0{row-gap:0}.row-gap-sm-1{row-gap:.25rem}.row-gap-sm-2{row-gap:.5rem}.row-gap-sm-3{row-gap:1rem}.row-gap-sm-4{row-gap:1.5rem}.row-gap-sm-5{row-gap:3rem}.column-gap-sm-0{column-gap:0}.column-gap-sm-1{column-gap:.25rem}.column-gap-sm-2{column-gap:.5rem}.column-gap-sm-3{column-gap:1rem}.column-gap-sm-4{column-gap:1.5rem}.column-gap-sm-5{column-gap:3rem}.text-sm-start{text-align:left}.text-sm-end{text-align:right}.text-sm-center{text-align:center}}@media (min-width: 768px){.float-md-start{float:left}.float-md-end{float:right}.float-md-none{float:none}.object-fit-md-contain{object-fit:contain}.object-fit-md-cover{object-fit:cover}.object-fit-md-fill{object-fit:fill}.object-fit-md-scale{object-fit:scale-down}.object-fit-md-none{object-fit:none}.d-md-inline{display:inline}.d-md-inline-block{display:inline-block}.d-md-block{display:block}.d-md-grid{display:grid}.d-md-inline-grid{display:inline-grid}.d-md-table{display:table}.d-md-table-row{display:table-row}.d-md-table-cell{display:table-cell}.d-md-flex{display:flex}.d-md-inline-flex{display:inline-flex}.d-md-none{display:none}.flex-md-fill{flex:1 1 auto}.flex-md-row{flex-direction:row}.flex-md-column{flex-direction:column}.flex-md-row-reverse{flex-direction:row-reverse}.flex-md-column-reverse{flex-direction:column-reverse}.flex-md-grow-0{flex-grow:0}.flex-md-grow-1{flex-grow:1}.flex-md-shrink-0{flex-shrink:0}.flex-md-shrink-1{flex-shrink:1}.flex-md-wrap{flex-wrap:wrap}.flex-md-nowrap{flex-wrap:nowrap}.flex-md-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-md-start{justify-content:flex-start}.justify-content-md-end{justify-content:flex-end}.justify-content-md-center{justify-content:center}.justify-content-md-between{justify-content:space-between}.justify-content-md-around{justify-content:space-around}.justify-content-md-evenly{justify-content:space-evenly}.align-items-md-start{align-items:flex-start}.align-items-md-end{align-items:flex-end}.align-items-md-center{align-items:center}.align-items-md-baseline{align-items:baseline}.align-items-md-stretch{align-items:stretch}.align-content-md-start{align-content:flex-start}.align-content-md-end{align-content:flex-end}.align-content-md-center{align-content:center}.align-content-md-between{align-content:space-between}.align-content-md-around{align-content:space-around}.align-content-md-stretch{align-content:stretch}.align-self-md-auto{align-self:auto}.align-self-md-start{align-self:flex-start}.align-self-md-end{align-self:flex-end}.align-self-md-center{align-self:center}.align-self-md-baseline{align-self:baseline}.align-self-md-stretch{align-self:stretch}.order-md-first{order:-1}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-last{order:6}.m-md-0{margin:0}.m-md-1{margin:.25rem}.m-md-2{margin:.5rem}.m-md-3{margin:1rem}.m-md-4{margin:1.5rem}.m-md-5{margin:3rem}.m-md-auto{margin:auto}.mx-md-0{margin-right:0;margin-left:0}.mx-md-1{margin-right:.25rem;margin-left:.25rem}.mx-md-2{margin-right:.5rem;margin-left:.5rem}.mx-md-3{margin-right:1rem;margin-left:1rem}.mx-md-4{margin-right:1.5rem;margin-left:1.5rem}.mx-md-5{margin-right:3rem;margin-left:3rem}.mx-md-auto{margin-right:auto;margin-left:auto}.my-md-0{margin-top:0;margin-bottom:0}.my-md-1{margin-top:.25rem;margin-bottom:.25rem}.my-md-2{margin-top:.5rem;margin-bottom:.5rem}.my-md-3{margin-top:1rem;margin-bottom:1rem}.my-md-4{margin-top:1.5rem;margin-bottom:1.5rem}.my-md-5{margin-top:3rem;margin-bottom:3rem}.my-md-auto{margin-top:auto;margin-bottom:auto}.mt-md-0{margin-top:0}.mt-md-1{margin-top:.25rem}.mt-md-2{margin-top:.5rem}.mt-md-3{margin-top:1rem}.mt-md-4{margin-top:1.5rem}.mt-md-5{margin-top:3rem}.mt-md-auto{margin-top:auto}.me-md-0{margin-right:0}.me-md-1{margin-right:.25rem}.me-md-2{margin-right:.5rem}.me-md-3{margin-right:1rem}.me-md-4{margin-right:1.5rem}.me-md-5{margin-right:3rem}.me-md-auto{margin-right:auto}.mb-md-0{margin-bottom:0}.mb-md-1{margin-bottom:.25rem}.mb-md-2{margin-bottom:.5rem}.mb-md-3{margin-bottom:1rem}.mb-md-4{margin-bottom:1.5rem}.mb-md-5{margin-bottom:3rem}.mb-md-auto{margin-bottom:auto}.ms-md-0{margin-left:0}.ms-md-1{margin-left:.25rem}.ms-md-2{margin-left:.5rem}.ms-md-3{margin-left:1rem}.ms-md-4{margin-left:1.5rem}.ms-md-5{margin-left:3rem}.ms-md-auto{margin-left:auto}.p-md-0{padding:0}.p-md-1{padding:.25rem}.p-md-2{padding:.5rem}.p-md-3{padding:1rem}.p-md-4{padding:1.5rem}.p-md-5{padding:3rem}.px-md-0{padding-right:0;padding-left:0}.px-md-1{padding-right:.25rem;padding-left:.25rem}.px-md-2{padding-right:.5rem;padding-left:.5rem}.px-md-3{padding-right:1rem;padding-left:1rem}.px-md-4{padding-right:1.5rem;padding-left:1.5rem}.px-md-5{padding-right:3rem;padding-left:3rem}.py-md-0{padding-top:0;padding-bottom:0}.py-md-1{padding-top:.25rem;padding-bottom:.25rem}.py-md-2{padding-top:.5rem;padding-bottom:.5rem}.py-md-3{padding-top:1rem;padding-bottom:1rem}.py-md-4{padding-top:1.5rem;padding-bottom:1.5rem}.py-md-5{padding-top:3rem;padding-bottom:3rem}.pt-md-0{padding-top:0}.pt-md-1{padding-top:.25rem}.pt-md-2{padding-top:.5rem}.pt-md-3{padding-top:1rem}.pt-md-4{padding-top:1.5rem}.pt-md-5{padding-top:3rem}.pe-md-0{padding-right:0}.pe-md-1{padding-right:.25rem}.pe-md-2{padding-right:.5rem}.pe-md-3{padding-right:1rem}.pe-md-4{padding-right:1.5rem}.pe-md-5{padding-right:3rem}.pb-md-0{padding-bottom:0}.pb-md-1{padding-bottom:.25rem}.pb-md-2{padding-bottom:.5rem}.pb-md-3{padding-bottom:1rem}.pb-md-4{padding-bottom:1.5rem}.pb-md-5{padding-bottom:3rem}.ps-md-0{padding-left:0}.ps-md-1{padding-left:.25rem}.ps-md-2{padding-left:.5rem}.ps-md-3{padding-left:1rem}.ps-md-4{padding-left:1.5rem}.ps-md-5{padding-left:3rem}.gap-md-0{gap:0}.gap-md-1{gap:.25rem}.gap-md-2{gap:.5rem}.gap-md-3{gap:1rem}.gap-md-4{gap:1.5rem}.gap-md-5{gap:3rem}.row-gap-md-0{row-gap:0}.row-gap-md-1{row-gap:.25rem}.row-gap-md-2{row-gap:.5rem}.row-gap-md-3{row-gap:1rem}.row-gap-md-4{row-gap:1.5rem}.row-gap-md-5{row-gap:3rem}.column-gap-md-0{column-gap:0}.column-gap-md-1{column-gap:.25rem}.column-gap-md-2{column-gap:.5rem}.column-gap-md-3{column-gap:1rem}.column-gap-md-4{column-gap:1.5rem}.column-gap-md-5{column-gap:3rem}.text-md-start{text-align:left}.text-md-end{text-align:right}.text-md-center{text-align:center}}@media (min-width: 992px){.float-lg-start{float:left}.float-lg-end{float:right}.float-lg-none{float:none}.object-fit-lg-contain{object-fit:contain}.object-fit-lg-cover{object-fit:cover}.object-fit-lg-fill{object-fit:fill}.object-fit-lg-scale{object-fit:scale-down}.object-fit-lg-none{object-fit:none}.d-lg-inline{display:inline}.d-lg-inline-block{display:inline-block}.d-lg-block{display:block}.d-lg-grid{display:grid}.d-lg-inline-grid{display:inline-grid}.d-lg-table{display:table}.d-lg-table-row{display:table-row}.d-lg-table-cell{display:table-cell}.d-lg-flex{display:flex}.d-lg-inline-flex{display:inline-flex}.d-lg-none{display:none}.flex-lg-fill{flex:1 1 auto}.flex-lg-row{flex-direction:row}.flex-lg-column{flex-direction:column}.flex-lg-row-reverse{flex-direction:row-reverse}.flex-lg-column-reverse{flex-direction:column-reverse}.flex-lg-grow-0{flex-grow:0}.flex-lg-grow-1{flex-grow:1}.flex-lg-shrink-0{flex-shrink:0}.flex-lg-shrink-1{flex-shrink:1}.flex-lg-wrap{flex-wrap:wrap}.flex-lg-nowrap{flex-wrap:nowrap}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-lg-start{justify-content:flex-start}.justify-content-lg-end{justify-content:flex-end}.justify-content-lg-center{justify-content:center}.justify-content-lg-between{justify-content:space-between}.justify-content-lg-around{justify-content:space-around}.justify-content-lg-evenly{justify-content:space-evenly}.align-items-lg-start{align-items:flex-start}.align-items-lg-end{align-items:flex-end}.align-items-lg-center{align-items:center}.align-items-lg-baseline{align-items:baseline}.align-items-lg-stretch{align-items:stretch}.align-content-lg-start{align-content:flex-start}.align-content-lg-end{align-content:flex-end}.align-content-lg-center{align-content:center}.align-content-lg-between{align-content:space-between}.align-content-lg-around{align-content:space-around}.align-content-lg-stretch{align-content:stretch}.align-self-lg-auto{align-self:auto}.align-self-lg-start{align-self:flex-start}.align-self-lg-end{align-self:flex-end}.align-self-lg-center{align-self:center}.align-self-lg-baseline{align-self:baseline}.align-self-lg-stretch{align-self:stretch}.order-lg-first{order:-1}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-last{order:6}.m-lg-0{margin:0}.m-lg-1{margin:.25rem}.m-lg-2{margin:.5rem}.m-lg-3{margin:1rem}.m-lg-4{margin:1.5rem}.m-lg-5{margin:3rem}.m-lg-auto{margin:auto}.mx-lg-0{margin-right:0;margin-left:0}.mx-lg-1{margin-right:.25rem;margin-left:.25rem}.mx-lg-2{margin-right:.5rem;margin-left:.5rem}.mx-lg-3{margin-right:1rem;margin-left:1rem}.mx-lg-4{margin-right:1.5rem;margin-left:1.5rem}.mx-lg-5{margin-right:3rem;margin-left:3rem}.mx-lg-auto{margin-right:auto;margin-left:auto}.my-lg-0{margin-top:0;margin-bottom:0}.my-lg-1{margin-top:.25rem;margin-bottom:.25rem}.my-lg-2{margin-top:.5rem;margin-bottom:.5rem}.my-lg-3{margin-top:1rem;margin-bottom:1rem}.my-lg-4{margin-top:1.5rem;margin-bottom:1.5rem}.my-lg-5{margin-top:3rem;margin-bottom:3rem}.my-lg-auto{margin-top:auto;margin-bottom:auto}.mt-lg-0{margin-top:0}.mt-lg-1{margin-top:.25rem}.mt-lg-2{margin-top:.5rem}.mt-lg-3{margin-top:1rem}.mt-lg-4{margin-top:1.5rem}.mt-lg-5{margin-top:3rem}.mt-lg-auto{margin-top:auto}.me-lg-0{margin-right:0}.me-lg-1{margin-right:.25rem}.me-lg-2{margin-right:.5rem}.me-lg-3{margin-right:1rem}.me-lg-4{margin-right:1.5rem}.me-lg-5{margin-right:3rem}.me-lg-auto{margin-right:auto}.mb-lg-0{margin-bottom:0}.mb-lg-1{margin-bottom:.25rem}.mb-lg-2{margin-bottom:.5rem}.mb-lg-3{margin-bottom:1rem}.mb-lg-4{margin-bottom:1.5rem}.mb-lg-5{margin-bottom:3rem}.mb-lg-auto{margin-bottom:auto}.ms-lg-0{margin-left:0}.ms-lg-1{margin-left:.25rem}.ms-lg-2{margin-left:.5rem}.ms-lg-3{margin-left:1rem}.ms-lg-4{margin-left:1.5rem}.ms-lg-5{margin-left:3rem}.ms-lg-auto{margin-left:auto}.p-lg-0{padding:0}.p-lg-1{padding:.25rem}.p-lg-2{padding:.5rem}.p-lg-3{padding:1rem}.p-lg-4{padding:1.5rem}.p-lg-5{padding:3rem}.px-lg-0{padding-right:0;padding-left:0}.px-lg-1{padding-right:.25rem;padding-left:.25rem}.px-lg-2{padding-right:.5rem;padding-left:.5rem}.px-lg-3{padding-right:1rem;padding-left:1rem}.px-lg-4{padding-right:1.5rem;padding-left:1.5rem}.px-lg-5{padding-right:3rem;padding-left:3rem}.py-lg-0{padding-top:0;padding-bottom:0}.py-lg-1{padding-top:.25rem;padding-bottom:.25rem}.py-lg-2{padding-top:.5rem;padding-bottom:.5rem}.py-lg-3{padding-top:1rem;padding-bottom:1rem}.py-lg-4{padding-top:1.5rem;padding-bottom:1.5rem}.py-lg-5{padding-top:3rem;padding-bottom:3rem}.pt-lg-0{padding-top:0}.pt-lg-1{padding-top:.25rem}.pt-lg-2{padding-top:.5rem}.pt-lg-3{padding-top:1rem}.pt-lg-4{padding-top:1.5rem}.pt-lg-5{padding-top:3rem}.pe-lg-0{padding-right:0}.pe-lg-1{padding-right:.25rem}.pe-lg-2{padding-right:.5rem}.pe-lg-3{padding-right:1rem}.pe-lg-4{padding-right:1.5rem}.pe-lg-5{padding-right:3rem}.pb-lg-0{padding-bottom:0}.pb-lg-1{padding-bottom:.25rem}.pb-lg-2{padding-bottom:.5rem}.pb-lg-3{padding-bottom:1rem}.pb-lg-4{padding-bottom:1.5rem}.pb-lg-5{padding-bottom:3rem}.ps-lg-0{padding-left:0}.ps-lg-1{padding-left:.25rem}.ps-lg-2{padding-left:.5rem}.ps-lg-3{padding-left:1rem}.ps-lg-4{padding-left:1.5rem}.ps-lg-5{padding-left:3rem}.gap-lg-0{gap:0}.gap-lg-1{gap:.25rem}.gap-lg-2{gap:.5rem}.gap-lg-3{gap:1rem}.gap-lg-4{gap:1.5rem}.gap-lg-5{gap:3rem}.row-gap-lg-0{row-gap:0}.row-gap-lg-1{row-gap:.25rem}.row-gap-lg-2{row-gap:.5rem}.row-gap-lg-3{row-gap:1rem}.row-gap-lg-4{row-gap:1.5rem}.row-gap-lg-5{row-gap:3rem}.column-gap-lg-0{column-gap:0}.column-gap-lg-1{column-gap:.25rem}.column-gap-lg-2{column-gap:.5rem}.column-gap-lg-3{column-gap:1rem}.column-gap-lg-4{column-gap:1.5rem}.column-gap-lg-5{column-gap:3rem}.text-lg-start{text-align:left}.text-lg-end{text-align:right}.text-lg-center{text-align:center}}@media (min-width: 1200px){.float-xl-start{float:left}.float-xl-end{float:right}.float-xl-none{float:none}.object-fit-xl-contain{object-fit:contain}.object-fit-xl-cover{object-fit:cover}.object-fit-xl-fill{object-fit:fill}.object-fit-xl-scale{object-fit:scale-down}.object-fit-xl-none{object-fit:none}.d-xl-inline{display:inline}.d-xl-inline-block{display:inline-block}.d-xl-block{display:block}.d-xl-grid{display:grid}.d-xl-inline-grid{display:inline-grid}.d-xl-table{display:table}.d-xl-table-row{display:table-row}.d-xl-table-cell{display:table-cell}.d-xl-flex{display:flex}.d-xl-inline-flex{display:inline-flex}.d-xl-none{display:none}.flex-xl-fill{flex:1 1 auto}.flex-xl-row{flex-direction:row}.flex-xl-column{flex-direction:column}.flex-xl-row-reverse{flex-direction:row-reverse}.flex-xl-column-reverse{flex-direction:column-reverse}.flex-xl-grow-0{flex-grow:0}.flex-xl-grow-1{flex-grow:1}.flex-xl-shrink-0{flex-shrink:0}.flex-xl-shrink-1{flex-shrink:1}.flex-xl-wrap{flex-wrap:wrap}.flex-xl-nowrap{flex-wrap:nowrap}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-xl-start{justify-content:flex-start}.justify-content-xl-end{justify-content:flex-end}.justify-content-xl-center{justify-content:center}.justify-content-xl-between{justify-content:space-between}.justify-content-xl-around{justify-content:space-around}.justify-content-xl-evenly{justify-content:space-evenly}.align-items-xl-start{align-items:flex-start}.align-items-xl-end{align-items:flex-end}.align-items-xl-center{align-items:center}.align-items-xl-baseline{align-items:baseline}.align-items-xl-stretch{align-items:stretch}.align-content-xl-start{align-content:flex-start}.align-content-xl-end{align-content:flex-end}.align-content-xl-center{align-content:center}.align-content-xl-between{align-content:space-between}.align-content-xl-around{align-content:space-around}.align-content-xl-stretch{align-content:stretch}.align-self-xl-auto{align-self:auto}.align-self-xl-start{align-self:flex-start}.align-self-xl-end{align-self:flex-end}.align-self-xl-center{align-self:center}.align-self-xl-baseline{align-self:baseline}.align-self-xl-stretch{align-self:stretch}.order-xl-first{order:-1}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-last{order:6}.m-xl-0{margin:0}.m-xl-1{margin:.25rem}.m-xl-2{margin:.5rem}.m-xl-3{margin:1rem}.m-xl-4{margin:1.5rem}.m-xl-5{margin:3rem}.m-xl-auto{margin:auto}.mx-xl-0{margin-right:0;margin-left:0}.mx-xl-1{margin-right:.25rem;margin-left:.25rem}.mx-xl-2{margin-right:.5rem;margin-left:.5rem}.mx-xl-3{margin-right:1rem;margin-left:1rem}.mx-xl-4{margin-right:1.5rem;margin-left:1.5rem}.mx-xl-5{margin-right:3rem;margin-left:3rem}.mx-xl-auto{margin-right:auto;margin-left:auto}.my-xl-0{margin-top:0;margin-bottom:0}.my-xl-1{margin-top:.25rem;margin-bottom:.25rem}.my-xl-2{margin-top:.5rem;margin-bottom:.5rem}.my-xl-3{margin-top:1rem;margin-bottom:1rem}.my-xl-4{margin-top:1.5rem;margin-bottom:1.5rem}.my-xl-5{margin-top:3rem;margin-bottom:3rem}.my-xl-auto{margin-top:auto;margin-bottom:auto}.mt-xl-0{margin-top:0}.mt-xl-1{margin-top:.25rem}.mt-xl-2{margin-top:.5rem}.mt-xl-3{margin-top:1rem}.mt-xl-4{margin-top:1.5rem}.mt-xl-5{margin-top:3rem}.mt-xl-auto{margin-top:auto}.me-xl-0{margin-right:0}.me-xl-1{margin-right:.25rem}.me-xl-2{margin-right:.5rem}.me-xl-3{margin-right:1rem}.me-xl-4{margin-right:1.5rem}.me-xl-5{margin-right:3rem}.me-xl-auto{margin-right:auto}.mb-xl-0{margin-bottom:0}.mb-xl-1{margin-bottom:.25rem}.mb-xl-2{margin-bottom:.5rem}.mb-xl-3{margin-bottom:1rem}.mb-xl-4{margin-bottom:1.5rem}.mb-xl-5{margin-bottom:3rem}.mb-xl-auto{margin-bottom:auto}.ms-xl-0{margin-left:0}.ms-xl-1{margin-left:.25rem}.ms-xl-2{margin-left:.5rem}.ms-xl-3{margin-left:1rem}.ms-xl-4{margin-left:1.5rem}.ms-xl-5{margin-left:3rem}.ms-xl-auto{margin-left:auto}.p-xl-0{padding:0}.p-xl-1{padding:.25rem}.p-xl-2{padding:.5rem}.p-xl-3{padding:1rem}.p-xl-4{padding:1.5rem}.p-xl-5{padding:3rem}.px-xl-0{padding-right:0;padding-left:0}.px-xl-1{padding-right:.25rem;padding-left:.25rem}.px-xl-2{padding-right:.5rem;padding-left:.5rem}.px-xl-3{padding-right:1rem;padding-left:1rem}.px-xl-4{padding-right:1.5rem;padding-left:1.5rem}.px-xl-5{padding-right:3rem;padding-left:3rem}.py-xl-0{padding-top:0;padding-bottom:0}.py-xl-1{padding-top:.25rem;padding-bottom:.25rem}.py-xl-2{padding-top:.5rem;padding-bottom:.5rem}.py-xl-3{padding-top:1rem;padding-bottom:1rem}.py-xl-4{padding-top:1.5rem;padding-bottom:1.5rem}.py-xl-5{padding-top:3rem;padding-bottom:3rem}.pt-xl-0{padding-top:0}.pt-xl-1{padding-top:.25rem}.pt-xl-2{padding-top:.5rem}.pt-xl-3{padding-top:1rem}.pt-xl-4{padding-top:1.5rem}.pt-xl-5{padding-top:3rem}.pe-xl-0{padding-right:0}.pe-xl-1{padding-right:.25rem}.pe-xl-2{padding-right:.5rem}.pe-xl-3{padding-right:1rem}.pe-xl-4{padding-right:1.5rem}.pe-xl-5{padding-right:3rem}.pb-xl-0{padding-bottom:0}.pb-xl-1{padding-bottom:.25rem}.pb-xl-2{padding-bottom:.5rem}.pb-xl-3{padding-bottom:1rem}.pb-xl-4{padding-bottom:1.5rem}.pb-xl-5{padding-bottom:3rem}.ps-xl-0{padding-left:0}.ps-xl-1{padding-left:.25rem}.ps-xl-2{padding-left:.5rem}.ps-xl-3{padding-left:1rem}.ps-xl-4{padding-left:1.5rem}.ps-xl-5{padding-left:3rem}.gap-xl-0{gap:0}.gap-xl-1{gap:.25rem}.gap-xl-2{gap:.5rem}.gap-xl-3{gap:1rem}.gap-xl-4{gap:1.5rem}.gap-xl-5{gap:3rem}.row-gap-xl-0{row-gap:0}.row-gap-xl-1{row-gap:.25rem}.row-gap-xl-2{row-gap:.5rem}.row-gap-xl-3{row-gap:1rem}.row-gap-xl-4{row-gap:1.5rem}.row-gap-xl-5{row-gap:3rem}.column-gap-xl-0{column-gap:0}.column-gap-xl-1{column-gap:.25rem}.column-gap-xl-2{column-gap:.5rem}.column-gap-xl-3{column-gap:1rem}.column-gap-xl-4{column-gap:1.5rem}.column-gap-xl-5{column-gap:3rem}.text-xl-start{text-align:left}.text-xl-end{text-align:right}.text-xl-center{text-align:center}}@media (min-width: 1400px){.float-xxl-start{float:left}.float-xxl-end{float:right}.float-xxl-none{float:none}.object-fit-xxl-contain{object-fit:contain}.object-fit-xxl-cover{object-fit:cover}.object-fit-xxl-fill{object-fit:fill}.object-fit-xxl-scale{object-fit:scale-down}.object-fit-xxl-none{object-fit:none}.d-xxl-inline{display:inline}.d-xxl-inline-block{display:inline-block}.d-xxl-block{display:block}.d-xxl-grid{display:grid}.d-xxl-inline-grid{display:inline-grid}.d-xxl-table{display:table}.d-xxl-table-row{display:table-row}.d-xxl-table-cell{display:table-cell}.d-xxl-flex{display:flex}.d-xxl-inline-flex{display:inline-flex}.d-xxl-none{display:none}.flex-xxl-fill{flex:1 1 auto}.flex-xxl-row{flex-direction:row}.flex-xxl-column{flex-direction:column}.flex-xxl-row-reverse{flex-direction:row-reverse}.flex-xxl-column-reverse{flex-direction:column-reverse}.flex-xxl-grow-0{flex-grow:0}.flex-xxl-grow-1{flex-grow:1}.flex-xxl-shrink-0{flex-shrink:0}.flex-xxl-shrink-1{flex-shrink:1}.flex-xxl-wrap{flex-wrap:wrap}.flex-xxl-nowrap{flex-wrap:nowrap}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-xxl-start{justify-content:flex-start}.justify-content-xxl-end{justify-content:flex-end}.justify-content-xxl-center{justify-content:center}.justify-content-xxl-between{justify-content:space-between}.justify-content-xxl-around{justify-content:space-around}.justify-content-xxl-evenly{justify-content:space-evenly}.align-items-xxl-start{align-items:flex-start}.align-items-xxl-end{align-items:flex-end}.align-items-xxl-center{align-items:center}.align-items-xxl-baseline{align-items:baseline}.align-items-xxl-stretch{align-items:stretch}.align-content-xxl-start{align-content:flex-start}.align-content-xxl-end{align-content:flex-end}.align-content-xxl-center{align-content:center}.align-content-xxl-between{align-content:space-between}.align-content-xxl-around{align-content:space-around}.align-content-xxl-stretch{align-content:stretch}.align-self-xxl-auto{align-self:auto}.align-self-xxl-start{align-self:flex-start}.align-self-xxl-end{align-self:flex-end}.align-self-xxl-center{align-self:center}.align-self-xxl-baseline{align-self:baseline}.align-self-xxl-stretch{align-self:stretch}.order-xxl-first{order:-1}.order-xxl-0{order:0}.order-xxl-1{order:1}.order-xxl-2{order:2}.order-xxl-3{order:3}.order-xxl-4{order:4}.order-xxl-5{order:5}.order-xxl-last{order:6}.m-xxl-0{margin:0}.m-xxl-1{margin:.25rem}.m-xxl-2{margin:.5rem}.m-xxl-3{margin:1rem}.m-xxl-4{margin:1.5rem}.m-xxl-5{margin:3rem}.m-xxl-auto{margin:auto}.mx-xxl-0{margin-right:0;margin-left:0}.mx-xxl-1{margin-right:.25rem;margin-left:.25rem}.mx-xxl-2{margin-right:.5rem;margin-left:.5rem}.mx-xxl-3{margin-right:1rem;margin-left:1rem}.mx-xxl-4{margin-right:1.5rem;margin-left:1.5rem}.mx-xxl-5{margin-right:3rem;margin-left:3rem}.mx-xxl-auto{margin-right:auto;margin-left:auto}.my-xxl-0{margin-top:0;margin-bottom:0}.my-xxl-1{margin-top:.25rem;margin-bottom:.25rem}.my-xxl-2{margin-top:.5rem;margin-bottom:.5rem}.my-xxl-3{margin-top:1rem;margin-bottom:1rem}.my-xxl-4{margin-top:1.5rem;margin-bottom:1.5rem}.my-xxl-5{margin-top:3rem;margin-bottom:3rem}.my-xxl-auto{margin-top:auto;margin-bottom:auto}.mt-xxl-0{margin-top:0}.mt-xxl-1{margin-top:.25rem}.mt-xxl-2{margin-top:.5rem}.mt-xxl-3{margin-top:1rem}.mt-xxl-4{margin-top:1.5rem}.mt-xxl-5{margin-top:3rem}.mt-xxl-auto{margin-top:auto}.me-xxl-0{margin-right:0}.me-xxl-1{margin-right:.25rem}.me-xxl-2{margin-right:.5rem}.me-xxl-3{margin-right:1rem}.me-xxl-4{margin-right:1.5rem}.me-xxl-5{margin-right:3rem}.me-xxl-auto{margin-right:auto}.mb-xxl-0{margin-bottom:0}.mb-xxl-1{margin-bottom:.25rem}.mb-xxl-2{margin-bottom:.5rem}.mb-xxl-3{margin-bottom:1rem}.mb-xxl-4{margin-bottom:1.5rem}.mb-xxl-5{margin-bottom:3rem}.mb-xxl-auto{margin-bottom:auto}.ms-xxl-0{margin-left:0}.ms-xxl-1{margin-left:.25rem}.ms-xxl-2{margin-left:.5rem}.ms-xxl-3{margin-left:1rem}.ms-xxl-4{margin-left:1.5rem}.ms-xxl-5{margin-left:3rem}.ms-xxl-auto{margin-left:auto}.p-xxl-0{padding:0}.p-xxl-1{padding:.25rem}.p-xxl-2{padding:.5rem}.p-xxl-3{padding:1rem}.p-xxl-4{padding:1.5rem}.p-xxl-5{padding:3rem}.px-xxl-0{padding-right:0;padding-left:0}.px-xxl-1{padding-right:.25rem;padding-left:.25rem}.px-xxl-2{padding-right:.5rem;padding-left:.5rem}.px-xxl-3{padding-right:1rem;padding-left:1rem}.px-xxl-4{padding-right:1.5rem;padding-left:1.5rem}.px-xxl-5{padding-right:3rem;padding-left:3rem}.py-xxl-0{padding-top:0;padding-bottom:0}.py-xxl-1{padding-top:.25rem;padding-bottom:.25rem}.py-xxl-2{padding-top:.5rem;padding-bottom:.5rem}.py-xxl-3{padding-top:1rem;padding-bottom:1rem}.py-xxl-4{padding-top:1.5rem;padding-bottom:1.5rem}.py-xxl-5{padding-top:3rem;padding-bottom:3rem}.pt-xxl-0{padding-top:0}.pt-xxl-1{padding-top:.25rem}.pt-xxl-2{padding-top:.5rem}.pt-xxl-3{padding-top:1rem}.pt-xxl-4{padding-top:1.5rem}.pt-xxl-5{padding-top:3rem}.pe-xxl-0{padding-right:0}.pe-xxl-1{padding-right:.25rem}.pe-xxl-2{padding-right:.5rem}.pe-xxl-3{padding-right:1rem}.pe-xxl-4{padding-right:1.5rem}.pe-xxl-5{padding-right:3rem}.pb-xxl-0{padding-bottom:0}.pb-xxl-1{padding-bottom:.25rem}.pb-xxl-2{padding-bottom:.5rem}.pb-xxl-3{padding-bottom:1rem}.pb-xxl-4{padding-bottom:1.5rem}.pb-xxl-5{padding-bottom:3rem}.ps-xxl-0{padding-left:0}.ps-xxl-1{padding-left:.25rem}.ps-xxl-2{padding-left:.5rem}.ps-xxl-3{padding-left:1rem}.ps-xxl-4{padding-left:1.5rem}.ps-xxl-5{padding-left:3rem}.gap-xxl-0{gap:0}.gap-xxl-1{gap:.25rem}.gap-xxl-2{gap:.5rem}.gap-xxl-3{gap:1rem}.gap-xxl-4{gap:1.5rem}.gap-xxl-5{gap:3rem}.row-gap-xxl-0{row-gap:0}.row-gap-xxl-1{row-gap:.25rem}.row-gap-xxl-2{row-gap:.5rem}.row-gap-xxl-3{row-gap:1rem}.row-gap-xxl-4{row-gap:1.5rem}.row-gap-xxl-5{row-gap:3rem}.column-gap-xxl-0{column-gap:0}.column-gap-xxl-1{column-gap:.25rem}.column-gap-xxl-2{column-gap:.5rem}.column-gap-xxl-3{column-gap:1rem}.column-gap-xxl-4{column-gap:1.5rem}.column-gap-xxl-5{column-gap:3rem}.text-xxl-start{text-align:left}.text-xxl-end{text-align:right}.text-xxl-center{text-align:center}}@media (min-width: 1200px){.fs-1{font-size:2.5rem}.fs-2{font-size:2rem}.fs-3{font-size:1.75rem}.fs-4{font-size:1.5rem}}@media print{.d-print-inline{display:inline}.d-print-inline-block{display:inline-block}.d-print-block{display:block}.d-print-grid{display:grid}.d-print-inline-grid{display:inline-grid}.d-print-table{display:table}.d-print-table-row{display:table-row}.d-print-table-cell{display:table-cell}.d-print-flex{display:flex}.d-print-inline-flex{display:inline-flex}.d-print-none{display:none}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:white;color:#000}.hljs-comment,.hljs-quote,.hljs-variable{color:green}.hljs-keyword,.hljs-selector-tag,.hljs-built_in,.hljs-name,.hljs-tag{color:#00f}.hljs-string,.hljs-title,.hljs-section,.hljs-attribute,.hljs-literal,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-addition{color:#a31515}.hljs-deletion,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-meta{color:#2b91af}.hljs-doctag{color:gray}.hljs-attr{color:red}.hljs-symbol,.hljs-bullet,.hljs-link{color:#00b0e8}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}[data-bs-theme=dark] pre code.hljs{display:block;overflow-x:auto;padding:1em}[data-bs-theme=dark] code.hljs{padding:3px 5px}[data-bs-theme=dark] .hljs{background:#1E1E1E;color:#dcdcdc}[data-bs-theme=dark] .hljs-keyword,[data-bs-theme=dark] .hljs-literal,[data-bs-theme=dark] .hljs-symbol,[data-bs-theme=dark] .hljs-name{color:#569cd6}[data-bs-theme=dark] .hljs-link{color:#569cd6;text-decoration:underline}[data-bs-theme=dark] .hljs-built_in,[data-bs-theme=dark] .hljs-type{color:#4ec9b0}[data-bs-theme=dark] .hljs-number,[data-bs-theme=dark] .hljs-class{color:#b8d7a3}[data-bs-theme=dark] .hljs-string,[data-bs-theme=dark] .hljs-meta .hljs-string{color:#d69d85}[data-bs-theme=dark] .hljs-regexp,[data-bs-theme=dark] .hljs-template-tag{color:#9a5334}[data-bs-theme=dark] .hljs-subst,[data-bs-theme=dark] .hljs-function,[data-bs-theme=dark] .hljs-title,[data-bs-theme=dark] .hljs-params,[data-bs-theme=dark] .hljs-formula{color:#dcdcdc}[data-bs-theme=dark] .hljs-comment,[data-bs-theme=dark] .hljs-quote{color:#57a64a;font-style:italic}[data-bs-theme=dark] .hljs-doctag{color:#608b4e}[data-bs-theme=dark] .hljs-meta,[data-bs-theme=dark] .hljs-meta .hljs-keyword,[data-bs-theme=dark] .hljs-tag{color:#9b9b9b}[data-bs-theme=dark] .hljs-variable,[data-bs-theme=dark] .hljs-template-variable{color:#bd63c5}[data-bs-theme=dark] .hljs-attr,[data-bs-theme=dark] .hljs-attribute{color:#9cdcfe}[data-bs-theme=dark] .hljs-section{color:gold}[data-bs-theme=dark] .hljs-emphasis{font-style:italic}[data-bs-theme=dark] .hljs-strong{font-weight:700}[data-bs-theme=dark] .hljs-bullet,[data-bs-theme=dark] .hljs-selector-tag,[data-bs-theme=dark] .hljs-selector-id,[data-bs-theme=dark] .hljs-selector-class,[data-bs-theme=dark] .hljs-selector-attr,[data-bs-theme=dark] .hljs-selector-pseudo{color:#d7ba7d}[data-bs-theme=dark] .hljs-addition{background-color:#144212;display:inline-block;width:100%}[data-bs-theme=dark] .hljs-deletion{background-color:#600;display:inline-block;width:100%}.hljs{background-color:#f5f5f5}pre>code .line-highlight{background-color:#ff0}[data-bs-theme=dark] pre>code .line-highlight{background-color:#4a4a00}html{width:calc(100vw - var(--scrollbar-width));min-height:100vh;overflow-x:hidden}body,body[data-layout=landing]{width:calc(100vw - var(--scrollbar-width));min-height:100vh;display:flex;flex-direction:column}body>header,body[data-layout=landing]>header{display:flex;align-items:stretch}@media (min-width: 768px){body>header,body[data-layout=landing]>header{position:sticky;top:0;z-index:1030}}@media (min-width: 768px){body>header,body[data-layout=landing]>header{height:60px}}body>header>nav,body[data-layout=landing]>header>nav{flex:1}body>footer,body[data-layout=landing]>footer{padding:1rem 0;height:60px}body>footer>div,body[data-layout=landing]>footer>div{display:flex;align-items:center}body>main,body[data-layout=landing]>main{display:flex;flex:1;padding-top:1.6rem;padding-bottom:4rem}body>main>.content>:not(article),body[data-layout=landing]>main>.content>:not(article){display:none}@media (min-width: 768px){body>main>.content>article [id],body[data-layout=landing]>main>.content>article [id]{scroll-margin-top:60px}}body>main>:not(.content),body[data-layout=landing]>main>:not(.content){display:none}@media print{body>header,body>footer,body[data-layout=landing]>header,body[data-layout=landing]>footer{display:none}}@media not print{body[data-search]>main{display:none}body[data-search]>.search-results{display:block;flex:1;padding-top:1.6rem;padding-bottom:4rem}body:not([data-search])>.search-results{display:none}body:not([data-search])[data-layout=""]>main,body:not([data-search])[data-layout=conceptual]>main{padding-bottom:0}body:not([data-search])[data-layout=""]>main>.toc-offcanvas,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas{flex:.35;display:block;overflow-x:hidden;overflow-y:auto;max-width:360px;max-height:calc(100vh - 60px - 1.6rem)}@media (min-width: 768px){body:not([data-search])[data-layout=""]>main>.toc-offcanvas,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas{position:sticky;top:calc(60px + 1.6rem)}}@media (max-width: 767.98px){body:not([data-search])[data-layout=""]>main>.toc-offcanvas,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas{flex:0}}body:not([data-search])[data-layout=""]>main>.content,body:not([data-search])[data-layout=conceptual]>main>.content{flex:1;min-width:0;margin:0 3rem;padding-bottom:4rem}body:not([data-search])[data-layout=""]>main>.content>.actionbar,body:not([data-search])[data-layout=conceptual]>main>.content>.actionbar{display:flex;align-items:flex-start;margin-top:.5rem;min-height:40px}body:not([data-search])[data-layout=""]>main>.content>.contribution,body:not([data-search])[data-layout=""]>main>.content>.next-article,body:not([data-search])[data-layout=conceptual]>main>.content>.contribution,body:not([data-search])[data-layout=conceptual]>main>.content>.next-article{display:flex}@media (max-width: 991.98px){body:not([data-search])[data-layout=""]>main>.content,body:not([data-search])[data-layout=conceptual]>main>.content{margin:0 1rem}}@media (max-width: 767.98px){body:not([data-search])[data-layout=""]>main>.content,body:not([data-search])[data-layout=conceptual]>main>.content{margin:0}}body:not([data-search])[data-layout=""]>main>.affix,body:not([data-search])[data-layout=conceptual]>main>.affix{display:block;width:230px;max-height:calc(100vh - 60px - 1.6rem);overflow-x:hidden;overflow-y:auto}@media (min-width: 768px){body:not([data-search])[data-layout=""]>main>.affix,body:not([data-search])[data-layout=conceptual]>main>.affix{position:sticky;top:calc(60px + 1.6rem)}}}@media only screen and (width <= 1140px){body:not([data-search])[data-layout=""]>main>.affix,body:not([data-search])[data-layout=conceptual]>main>.affix{display:none}}@media not print{body:not([data-search])[data-layout=chromeless]>header,body:not([data-search])[data-layout=chromeless]>footer{display:none}}.breadcrumb{font-size:14px}.breadcrumb a{text-decoration:none}.breadcrumb a:hover,.breadcrumb a:focus{text-decoration:underline}.next-article{display:flex}.next-article:not(:has(div)){border-top-width:0}.next-article:has(div){margin-top:3rem;padding-top:1rem}.next-article>div{flex:1}.next-article>div.next{text-align:right}.next-article>div>span{opacity:.66;font-size:14px}.next-article>div>a{display:block}.navbar{padding:0}.navbar .navbar-brand{display:flex;align-items:center}.navbar .navbar-nav{display:flex;flex-wrap:nowrap}.navbar #navbar{display:flex;flex:1;justify-content:flex-end}.navbar #navbar form{display:flex;position:relative;align-items:center}.navbar #navbar form>i.bi{position:absolute;left:.8rem;opacity:.5}.navbar #navbar form>input{padding-left:2.5rem}.navbar #navbar form.search{order:50}.navbar #navbar form.icons{margin-left:auto}@media (max-width: 767.98px){.navbar #navbar{flex-direction:column;align-items:flex-start}.navbar #navbar form{margin:1rem 0 0}.navbar #navbar form.search{align-self:stretch;order:30}.navbar #navbar form.icons{align-self:center;order:40;margin:1rem 0}}.affix{font-size:14px}.affix h5,.affix .h5{display:inline-block;font-weight:300;text-transform:uppercase;padding:1em 0 .5em;font-size:14px;letter-spacing:2px}.affix h6,.affix .h6{font-size:14px}.affix ul{flex-direction:column;list-style-type:none;padding-left:0;margin-left:0}.affix ul h6,.affix ul .h6{margin-top:1rem}.affix ul li{margin:.4rem 0}.affix ul li a{text-decoration:none}.affix ul li a:hover,.affix ul li a:focus{text-decoration:underline}.contribution{margin-top:2rem}.contribution a.edit-link{text-decoration:none}.contribution a.edit-link:hover,.contribution a.edit-link:focus{text-decoration:underline}.contribution a.edit-link:before{content:"\f4ca";display:inline-block;font-family:bootstrap-icons;position:relative;margin-right:.5em;top:.2em;font-size:1.25em;font-weight:400}.toc{min-width:0;width:100%}.toc ul{font-size:14px;flex-direction:column;list-style-type:none;padding-left:0;overflow-wrap:break-word}.toc li{font-weight:400;margin:.6em 0;padding-left:.85rem;position:relative}.toc li>a{display:inline;text-decoration:none}.toc li>a:hover,.toc li>a:focus{text-decoration:underline}.toc li>ul{display:none}.toc li.expanded>ul{display:block}.toc .expand-stub:before{display:inline-block;width:.85rem;cursor:pointer;font-family:bootstrap-icons;font-size:.8em;content:"\f285";position:absolute;margin-top:.2em;margin-left:-.85rem;transition:transform .35s ease;transform-origin:.5em 50%}@media (prefers-reduced-motion){.toc .expand-stub:before{transition:none}}.toc li.expanded>.expand-stub:before{transform:rotate(90deg)}.toc span.name-only{font-weight:600;display:inline-block;margin:.4rem 0}.toc form.filter{display:flex;position:relative;align-items:center;margin-bottom:1rem}.toc form.filter>i.bi{position:absolute;left:.6rem;opacity:.5}.toc form.filter>input{padding-left:2rem}.toc>.no-result{font-size:.9em;color:#6c757d}a.external[href]:after{font-family:bootstrap-icons;content:"\f1c5";font-size:.6rem;margin:0 .2em;display:inline-block}blockquote{border-style:solid;border-width:0 0 0 3px;border-color:#c4c8cb;margin:1.2em 0 2em;padding:0 .8em;display:block}[data-bs-theme=dark] blockquote{border-color:#41464b}.alert h5,.alert .h5{text-transform:uppercase;font-weight:700;font-size:1rem}.alert h5:before,.alert .h5:before{font-family:bootstrap-icons;position:relative;margin-right:.5em;top:.2em;font-size:1.25em;font-weight:400}.alert:not(:has(h5))>p:last-child{margin-block-end:0}.alert-info h5:before,.alert-info .h5:before{content:"\f431"}.alert-warning h5:before,.alert-warning .h5:before{content:"\f333"}.alert-danger h5:before,.alert-danger .h5:before{content:"\f623"}div.embeddedvideo{padding-top:56.25%;position:relative;width:100%;margin-bottom:1em}div.embeddedvideo iframe{position:absolute;inset:0;width:100%;height:100%}pre{position:relative}pre>.code-action{display:none;position:absolute;top:.25rem;right:.2rem}pre>.code-action .bi-check-lg{font-size:1.2rem}pre:hover>.code-action{display:block}.tabGroup{margin-bottom:1rem}.tabGroup>section{margin:0;padding:1rem;border-top:0;border-top-left-radius:0;border-top-right-radius:0}#search-results{line-height:1.8}#search-results>.search-list{font-size:.9em;color:#6c757d}#search-results>.sr-items{flex:1}#search-results>.sr-items .sr-item{margin-bottom:1.5em}#search-results>.sr-items .sr-item>.item-title{font-size:x-large}#search-results>.sr-items .sr-item>.item-href{color:#093;font-size:small}#search-results>.sr-items .sr-item>.item-brief{font-size:small}body[data-yaml-mime=ManagedReference] article h1[data-uid],body[data-yaml-mime=ManagedReference] article [data-uid].h1,body[data-yaml-mime=ApiPage] article h1[data-uid],body[data-yaml-mime=ApiPage] article [data-uid].h1{position:relative;padding-right:1.6rem}body[data-yaml-mime=ManagedReference] article h3[data-uid],body[data-yaml-mime=ManagedReference] article [data-uid].h3,body[data-yaml-mime=ApiPage] article h3[data-uid],body[data-yaml-mime=ApiPage] article [data-uid].h3{position:relative;font-weight:400;margin-top:3rem;padding-bottom:5px;padding-right:1.6rem}body[data-yaml-mime=ManagedReference] article h2.section,body[data-yaml-mime=ManagedReference] article .section.h2,body[data-yaml-mime=ApiPage] article h2.section,body[data-yaml-mime=ApiPage] article .section.h2{margin-top:3rem}body[data-yaml-mime=ManagedReference] article h2.section+h3[data-uid],body[data-yaml-mime=ManagedReference] article .section.h2+h3[data-uid],body[data-yaml-mime=ManagedReference] article h2.section+[data-uid].h3,body[data-yaml-mime=ManagedReference] article .section.h2+[data-uid].h3,body[data-yaml-mime=ManagedReference] article h2.section+a+h3[data-uid],body[data-yaml-mime=ManagedReference] article .section.h2+a+h3[data-uid],body[data-yaml-mime=ManagedReference] article h2.section+a+[data-uid].h3,body[data-yaml-mime=ManagedReference] article .section.h2+a+[data-uid].h3,body[data-yaml-mime=ApiPage] article h2.section+h3[data-uid],body[data-yaml-mime=ApiPage] article .section.h2+h3[data-uid],body[data-yaml-mime=ApiPage] article h2.section+[data-uid].h3,body[data-yaml-mime=ApiPage] article .section.h2+[data-uid].h3,body[data-yaml-mime=ApiPage] article h2.section+a+h3[data-uid],body[data-yaml-mime=ApiPage] article .section.h2+a+h3[data-uid],body[data-yaml-mime=ApiPage] article h2.section+a+[data-uid].h3,body[data-yaml-mime=ApiPage] article .section.h2+a+[data-uid].h3{margin-top:1rem}body[data-yaml-mime=ManagedReference] article h4.section,body[data-yaml-mime=ManagedReference] article .section.h4,body[data-yaml-mime=ApiPage] article h4.section,body[data-yaml-mime=ApiPage] article .section.h4{font-weight:300;margin-top:1.6rem}body[data-yaml-mime=ManagedReference] article dl>dt,body[data-yaml-mime=ApiPage] article dl>dt{font-weight:400}body[data-yaml-mime=ManagedReference] article dl>dd,body[data-yaml-mime=ApiPage] article dl>dd{margin-left:1rem}body[data-yaml-mime=ManagedReference] article dl.typelist>dt,body[data-yaml-mime=ApiPage] article dl.typelist>dt{font-weight:600}body[data-yaml-mime=ManagedReference] article dl.typelist>dd,body[data-yaml-mime=ApiPage] article dl.typelist>dd{margin-left:0}body[data-yaml-mime=ManagedReference] article dl.typelist>dd>div,body[data-yaml-mime=ApiPage] article dl.typelist>dd>div{display:inline-block}body[data-yaml-mime=ManagedReference] article dl.typelist>dd>div:not(:last-child):after,body[data-yaml-mime=ApiPage] article dl.typelist>dd>div:not(:last-child):after{content:", "}body[data-yaml-mime=ManagedReference] article dl.typelist.inheritance>dd>div:not(:last-child):after,body[data-yaml-mime=ApiPage] article dl.typelist.inheritance>dd>div:not(:last-child):after{font-family:bootstrap-icons;content:"\f12c";position:relative;top:.2em;opacity:.8}body[data-yaml-mime=ManagedReference] article dl.parameters>dt,body[data-yaml-mime=ApiPage] article dl.parameters>dt{margin:1em 0}body[data-yaml-mime=ManagedReference] article dl.parameters>dt>code,body[data-yaml-mime=ApiPage] article dl.parameters>dt>code{margin-right:.2em;font-size:1em}body[data-yaml-mime=ManagedReference] article div.facts,body[data-yaml-mime=ApiPage] article div.facts{font-size:14px;margin:2rem 0 1rem}body[data-yaml-mime=ManagedReference] article div.facts>dl,body[data-yaml-mime=ApiPage] article div.facts>dl{margin:0}body[data-yaml-mime=ManagedReference] article div.facts>dl>dd,body[data-yaml-mime=ApiPage] article div.facts>dl>dd{margin-left:.25rem;display:inline-block}body[data-yaml-mime=ManagedReference] article div.facts>dl>dt,body[data-yaml-mime=ApiPage] article div.facts>dl>dt{display:inline-block}body[data-yaml-mime=ManagedReference] article div.facts>dl>dt:after,body[data-yaml-mime=ApiPage] article div.facts>dl>dt:after{content:":"}body[data-yaml-mime=ManagedReference] article .header-action,body[data-yaml-mime=ApiPage] article .header-action{position:absolute;right:0;bottom:.2rem;font-size:1.2rem}body[data-yaml-mime=ManagedReference] article td.term,body[data-yaml-mime=ApiPage] article td.term{font-weight:600}body[data-yaml-mime=ManagedReference] article summary,body[data-yaml-mime=ApiPage] article summary{display:block;cursor:inherit}body[data-yaml-mime=ManagedReference] article li>span.term,body[data-yaml-mime=ApiPage] article li>span.term{font-weight:600}body[data-yaml-mime=ManagedReference] article li>span.term:after,body[data-yaml-mime=ApiPage] article li>span.term:after{content:"-";margin:0 .5em}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6,.xref,.text-break{word-wrap:break-word;word-break:break-word}.divider{margin:0 5px;color:#ccc}article span.small.pull-right{float:right}article img{max-width:100%;height:auto}.codewrapper{position:relative}.sample-response .response-content{max-height:200px}@media (width <= 768px){#mobile-indicator{display:block}.mobile-hide{display:none}h1:before,.h1:before,h2:before,.h2:before,h3:before,.h3:before,h4:before,.h4:before{content:"";display:none}} +/*! + * Bootstrap v5.3.2 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +/*! Bundled license information: + +bootstrap-icons/font/bootstrap-icons.scss: + (*! + * Bootstrap Icons v1.11.1 (https://icons.getbootstrap.com/) + * Copyright 2019-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + *) +*/ +/*# sourceMappingURL=docfx.min.css.map */ diff --git a/public/docfx.min.css.map b/public/docfx.min.css.map new file mode 100644 index 0000000..850bf1a --- /dev/null +++ b/public/docfx.min.css.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/bootstrap-icons/font/bootstrap-icons.scss", "../src/docfx.scss", "../src/mixins.scss", "../../node_modules/bootstrap/scss/mixins/_banner.scss", "../../node_modules/bootstrap/scss/_root.scss", "../../node_modules/bootstrap/scss/vendor/_rfs.scss", "../../node_modules/bootstrap/scss/mixins/_color-mode.scss", "../../node_modules/bootstrap/scss/_reboot.scss", "../../node_modules/bootstrap/scss/_variables.scss", "../../node_modules/bootstrap/scss/mixins/_border-radius.scss", "../../node_modules/bootstrap/scss/_type.scss", "../../node_modules/bootstrap/scss/mixins/_lists.scss", "../../node_modules/bootstrap/scss/_images.scss", "../../node_modules/bootstrap/scss/mixins/_image.scss", "../../node_modules/bootstrap/scss/_containers.scss", "../../node_modules/bootstrap/scss/mixins/_container.scss", "../../node_modules/bootstrap/scss/mixins/_breakpoints.scss", "../../node_modules/bootstrap/scss/_grid.scss", "../../node_modules/bootstrap/scss/mixins/_grid.scss", "../../node_modules/bootstrap/scss/_tables.scss", "../../node_modules/bootstrap/scss/mixins/_table-variants.scss", "../../node_modules/bootstrap/scss/forms/_labels.scss", "../../node_modules/bootstrap/scss/forms/_form-text.scss", "../../node_modules/bootstrap/scss/forms/_form-control.scss", "../../node_modules/bootstrap/scss/mixins/_transition.scss", "../../node_modules/bootstrap/scss/mixins/_gradients.scss", "../../node_modules/bootstrap/scss/forms/_form-select.scss", "../../node_modules/bootstrap/scss/forms/_form-check.scss", "../../node_modules/bootstrap/scss/forms/_form-range.scss", "../../node_modules/bootstrap/scss/forms/_floating-labels.scss", "../../node_modules/bootstrap/scss/forms/_input-group.scss", "../../node_modules/bootstrap/scss/mixins/_forms.scss", "../../node_modules/bootstrap/scss/_buttons.scss", "../../node_modules/bootstrap/scss/mixins/_buttons.scss", "../../node_modules/bootstrap/scss/_transitions.scss", "../../node_modules/bootstrap/scss/_dropdown.scss", "../../node_modules/bootstrap/scss/mixins/_caret.scss", "../../node_modules/bootstrap/scss/_button-group.scss", "../../node_modules/bootstrap/scss/_nav.scss", "../../node_modules/bootstrap/scss/_navbar.scss", "../../node_modules/bootstrap/scss/_card.scss", "../../node_modules/bootstrap/scss/_accordion.scss", "../../node_modules/bootstrap/scss/_breadcrumb.scss", "../../node_modules/bootstrap/scss/_pagination.scss", "../../node_modules/bootstrap/scss/mixins/_pagination.scss", "../../node_modules/bootstrap/scss/_badge.scss", "../../node_modules/bootstrap/scss/_alert.scss", "../../node_modules/bootstrap/scss/_progress.scss", "../../node_modules/bootstrap/scss/_list-group.scss", "../../node_modules/bootstrap/scss/_close.scss", "../../node_modules/bootstrap/scss/_toasts.scss", "../../node_modules/bootstrap/scss/_modal.scss", "../../node_modules/bootstrap/scss/mixins/_backdrop.scss", "../../node_modules/bootstrap/scss/_tooltip.scss", "../../node_modules/bootstrap/scss/mixins/_reset-text.scss", "../../node_modules/bootstrap/scss/_popover.scss", "../../node_modules/bootstrap/scss/_carousel.scss", "../../node_modules/bootstrap/scss/mixins/_clearfix.scss", "../../node_modules/bootstrap/scss/_spinners.scss", "../../node_modules/bootstrap/scss/_offcanvas.scss", "../../node_modules/bootstrap/scss/_placeholders.scss", "../../node_modules/bootstrap/scss/helpers/_color-bg.scss", "../../node_modules/bootstrap/scss/helpers/_colored-links.scss", "../../node_modules/bootstrap/scss/helpers/_focus-ring.scss", "../../node_modules/bootstrap/scss/helpers/_icon-link.scss", "../../node_modules/bootstrap/scss/helpers/_ratio.scss", "../../node_modules/bootstrap/scss/helpers/_position.scss", "../../node_modules/bootstrap/scss/helpers/_stacks.scss", "../../node_modules/bootstrap/scss/helpers/_visually-hidden.scss", "../../node_modules/bootstrap/scss/mixins/_visually-hidden.scss", "../../node_modules/bootstrap/scss/helpers/_stretched-link.scss", "../../node_modules/bootstrap/scss/helpers/_text-truncation.scss", "../../node_modules/bootstrap/scss/mixins/_text-truncate.scss", "../../node_modules/bootstrap/scss/helpers/_vr.scss", "../../node_modules/bootstrap/scss/mixins/_utilities.scss", "../../node_modules/bootstrap/scss/utilities/_api.scss", "../src/highlight.scss", "../../node_modules/highlight.js/scss/vs.scss", "../../node_modules/highlight.js/scss/vs2015.scss", "../src/layout.scss", "../src/nav.scss", "../src/toc.scss", "../src/markdown.scss", "../../node_modules/bootstrap/scss/_variables-dark.scss", "../src/search.scss", "../src/dotnet.scss"], + "sourcesContent": ["/*!\n * Bootstrap Icons v1.11.1 (https://icons.getbootstrap.com/)\n * Copyright 2019-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE)\n */\n\n$bootstrap-icons-font: \"bootstrap-icons\" !default;\n$bootstrap-icons-font-dir: \"./fonts\" !default;\n$bootstrap-icons-font-file: \"#{$bootstrap-icons-font-dir}/#{$bootstrap-icons-font}\" !default;\n$bootstrap-icons-font-hash: \"24e3eb84d0bcaf83d77f904c78ac1f47\" !default;\n$bootstrap-icons-font-src: url(\"#{$bootstrap-icons-font-file}.woff2?#{$bootstrap-icons-font-hash}\") format(\"woff2\"),\n url(\"#{$bootstrap-icons-font-file}.woff?#{$bootstrap-icons-font-hash}\") format(\"woff\") !default;\n\n@font-face {\n font-display: block;\n font-family: $bootstrap-icons-font;\n src: $bootstrap-icons-font-src;\n}\n\n.bi::before,\n[class^=\"bi-\"]::before,\n[class*=\" bi-\"]::before {\n display: inline-block;\n font-family: $bootstrap-icons-font !important;\n font-style: normal;\n font-weight: normal !important;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n vertical-align: -.125em;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n$bootstrap-icons-map: (\n \"123\": \"\\f67f\",\n \"alarm-fill\": \"\\f101\",\n \"alarm\": \"\\f102\",\n \"align-bottom\": \"\\f103\",\n \"align-center\": \"\\f104\",\n \"align-end\": \"\\f105\",\n \"align-middle\": \"\\f106\",\n \"align-start\": \"\\f107\",\n \"align-top\": \"\\f108\",\n \"alt\": \"\\f109\",\n \"app-indicator\": \"\\f10a\",\n \"app\": \"\\f10b\",\n \"archive-fill\": \"\\f10c\",\n \"archive\": \"\\f10d\",\n \"arrow-90deg-down\": \"\\f10e\",\n \"arrow-90deg-left\": \"\\f10f\",\n \"arrow-90deg-right\": \"\\f110\",\n \"arrow-90deg-up\": \"\\f111\",\n \"arrow-bar-down\": \"\\f112\",\n \"arrow-bar-left\": \"\\f113\",\n \"arrow-bar-right\": \"\\f114\",\n \"arrow-bar-up\": \"\\f115\",\n \"arrow-clockwise\": \"\\f116\",\n \"arrow-counterclockwise\": \"\\f117\",\n \"arrow-down-circle-fill\": \"\\f118\",\n \"arrow-down-circle\": \"\\f119\",\n \"arrow-down-left-circle-fill\": \"\\f11a\",\n \"arrow-down-left-circle\": \"\\f11b\",\n \"arrow-down-left-square-fill\": \"\\f11c\",\n \"arrow-down-left-square\": \"\\f11d\",\n \"arrow-down-left\": \"\\f11e\",\n \"arrow-down-right-circle-fill\": \"\\f11f\",\n \"arrow-down-right-circle\": \"\\f120\",\n \"arrow-down-right-square-fill\": \"\\f121\",\n \"arrow-down-right-square\": \"\\f122\",\n \"arrow-down-right\": \"\\f123\",\n \"arrow-down-short\": \"\\f124\",\n \"arrow-down-square-fill\": \"\\f125\",\n \"arrow-down-square\": \"\\f126\",\n \"arrow-down-up\": \"\\f127\",\n \"arrow-down\": \"\\f128\",\n \"arrow-left-circle-fill\": \"\\f129\",\n \"arrow-left-circle\": \"\\f12a\",\n \"arrow-left-right\": \"\\f12b\",\n \"arrow-left-short\": \"\\f12c\",\n \"arrow-left-square-fill\": \"\\f12d\",\n \"arrow-left-square\": \"\\f12e\",\n \"arrow-left\": \"\\f12f\",\n \"arrow-repeat\": \"\\f130\",\n \"arrow-return-left\": \"\\f131\",\n \"arrow-return-right\": \"\\f132\",\n \"arrow-right-circle-fill\": \"\\f133\",\n \"arrow-right-circle\": \"\\f134\",\n \"arrow-right-short\": \"\\f135\",\n \"arrow-right-square-fill\": \"\\f136\",\n \"arrow-right-square\": \"\\f137\",\n \"arrow-right\": \"\\f138\",\n \"arrow-up-circle-fill\": \"\\f139\",\n \"arrow-up-circle\": \"\\f13a\",\n \"arrow-up-left-circle-fill\": \"\\f13b\",\n \"arrow-up-left-circle\": \"\\f13c\",\n \"arrow-up-left-square-fill\": \"\\f13d\",\n \"arrow-up-left-square\": \"\\f13e\",\n \"arrow-up-left\": \"\\f13f\",\n \"arrow-up-right-circle-fill\": \"\\f140\",\n \"arrow-up-right-circle\": \"\\f141\",\n \"arrow-up-right-square-fill\": \"\\f142\",\n \"arrow-up-right-square\": \"\\f143\",\n \"arrow-up-right\": \"\\f144\",\n \"arrow-up-short\": \"\\f145\",\n \"arrow-up-square-fill\": \"\\f146\",\n \"arrow-up-square\": \"\\f147\",\n \"arrow-up\": \"\\f148\",\n \"arrows-angle-contract\": \"\\f149\",\n \"arrows-angle-expand\": \"\\f14a\",\n \"arrows-collapse\": \"\\f14b\",\n \"arrows-expand\": \"\\f14c\",\n \"arrows-fullscreen\": \"\\f14d\",\n \"arrows-move\": \"\\f14e\",\n \"aspect-ratio-fill\": \"\\f14f\",\n \"aspect-ratio\": \"\\f150\",\n \"asterisk\": \"\\f151\",\n \"at\": \"\\f152\",\n \"award-fill\": \"\\f153\",\n \"award\": \"\\f154\",\n \"back\": \"\\f155\",\n \"backspace-fill\": \"\\f156\",\n \"backspace-reverse-fill\": \"\\f157\",\n \"backspace-reverse\": \"\\f158\",\n \"backspace\": \"\\f159\",\n \"badge-3d-fill\": \"\\f15a\",\n \"badge-3d\": \"\\f15b\",\n \"badge-4k-fill\": \"\\f15c\",\n \"badge-4k\": \"\\f15d\",\n \"badge-8k-fill\": \"\\f15e\",\n \"badge-8k\": \"\\f15f\",\n \"badge-ad-fill\": \"\\f160\",\n \"badge-ad\": \"\\f161\",\n \"badge-ar-fill\": \"\\f162\",\n \"badge-ar\": \"\\f163\",\n \"badge-cc-fill\": \"\\f164\",\n \"badge-cc\": \"\\f165\",\n \"badge-hd-fill\": \"\\f166\",\n \"badge-hd\": \"\\f167\",\n \"badge-tm-fill\": \"\\f168\",\n \"badge-tm\": \"\\f169\",\n \"badge-vo-fill\": \"\\f16a\",\n \"badge-vo\": \"\\f16b\",\n \"badge-vr-fill\": \"\\f16c\",\n \"badge-vr\": \"\\f16d\",\n \"badge-wc-fill\": \"\\f16e\",\n \"badge-wc\": \"\\f16f\",\n \"bag-check-fill\": \"\\f170\",\n \"bag-check\": \"\\f171\",\n \"bag-dash-fill\": \"\\f172\",\n \"bag-dash\": \"\\f173\",\n \"bag-fill\": \"\\f174\",\n \"bag-plus-fill\": \"\\f175\",\n \"bag-plus\": \"\\f176\",\n \"bag-x-fill\": \"\\f177\",\n \"bag-x\": \"\\f178\",\n \"bag\": \"\\f179\",\n \"bar-chart-fill\": \"\\f17a\",\n \"bar-chart-line-fill\": \"\\f17b\",\n \"bar-chart-line\": \"\\f17c\",\n \"bar-chart-steps\": \"\\f17d\",\n \"bar-chart\": \"\\f17e\",\n \"basket-fill\": \"\\f17f\",\n \"basket\": \"\\f180\",\n \"basket2-fill\": \"\\f181\",\n \"basket2\": \"\\f182\",\n \"basket3-fill\": \"\\f183\",\n \"basket3\": \"\\f184\",\n \"battery-charging\": \"\\f185\",\n \"battery-full\": \"\\f186\",\n \"battery-half\": \"\\f187\",\n \"battery\": \"\\f188\",\n \"bell-fill\": \"\\f189\",\n \"bell\": \"\\f18a\",\n \"bezier\": \"\\f18b\",\n \"bezier2\": \"\\f18c\",\n \"bicycle\": \"\\f18d\",\n \"binoculars-fill\": \"\\f18e\",\n \"binoculars\": \"\\f18f\",\n \"blockquote-left\": \"\\f190\",\n \"blockquote-right\": \"\\f191\",\n \"book-fill\": \"\\f192\",\n \"book-half\": \"\\f193\",\n \"book\": \"\\f194\",\n \"bookmark-check-fill\": \"\\f195\",\n \"bookmark-check\": \"\\f196\",\n \"bookmark-dash-fill\": \"\\f197\",\n \"bookmark-dash\": \"\\f198\",\n \"bookmark-fill\": \"\\f199\",\n \"bookmark-heart-fill\": \"\\f19a\",\n \"bookmark-heart\": \"\\f19b\",\n \"bookmark-plus-fill\": \"\\f19c\",\n \"bookmark-plus\": \"\\f19d\",\n \"bookmark-star-fill\": \"\\f19e\",\n \"bookmark-star\": \"\\f19f\",\n \"bookmark-x-fill\": \"\\f1a0\",\n \"bookmark-x\": \"\\f1a1\",\n \"bookmark\": \"\\f1a2\",\n \"bookmarks-fill\": \"\\f1a3\",\n \"bookmarks\": \"\\f1a4\",\n \"bookshelf\": \"\\f1a5\",\n \"bootstrap-fill\": \"\\f1a6\",\n \"bootstrap-reboot\": \"\\f1a7\",\n \"bootstrap\": \"\\f1a8\",\n \"border-all\": \"\\f1a9\",\n \"border-bottom\": \"\\f1aa\",\n \"border-center\": \"\\f1ab\",\n \"border-inner\": \"\\f1ac\",\n \"border-left\": \"\\f1ad\",\n \"border-middle\": \"\\f1ae\",\n \"border-outer\": \"\\f1af\",\n \"border-right\": \"\\f1b0\",\n \"border-style\": \"\\f1b1\",\n \"border-top\": \"\\f1b2\",\n \"border-width\": \"\\f1b3\",\n \"border\": \"\\f1b4\",\n \"bounding-box-circles\": \"\\f1b5\",\n \"bounding-box\": \"\\f1b6\",\n \"box-arrow-down-left\": \"\\f1b7\",\n \"box-arrow-down-right\": \"\\f1b8\",\n \"box-arrow-down\": \"\\f1b9\",\n \"box-arrow-in-down-left\": \"\\f1ba\",\n \"box-arrow-in-down-right\": \"\\f1bb\",\n \"box-arrow-in-down\": \"\\f1bc\",\n \"box-arrow-in-left\": \"\\f1bd\",\n \"box-arrow-in-right\": \"\\f1be\",\n \"box-arrow-in-up-left\": \"\\f1bf\",\n \"box-arrow-in-up-right\": \"\\f1c0\",\n \"box-arrow-in-up\": \"\\f1c1\",\n \"box-arrow-left\": \"\\f1c2\",\n \"box-arrow-right\": \"\\f1c3\",\n \"box-arrow-up-left\": \"\\f1c4\",\n \"box-arrow-up-right\": \"\\f1c5\",\n \"box-arrow-up\": \"\\f1c6\",\n \"box-seam\": \"\\f1c7\",\n \"box\": \"\\f1c8\",\n \"braces\": \"\\f1c9\",\n \"bricks\": \"\\f1ca\",\n \"briefcase-fill\": \"\\f1cb\",\n \"briefcase\": \"\\f1cc\",\n \"brightness-alt-high-fill\": \"\\f1cd\",\n \"brightness-alt-high\": \"\\f1ce\",\n \"brightness-alt-low-fill\": \"\\f1cf\",\n \"brightness-alt-low\": \"\\f1d0\",\n \"brightness-high-fill\": \"\\f1d1\",\n \"brightness-high\": \"\\f1d2\",\n \"brightness-low-fill\": \"\\f1d3\",\n \"brightness-low\": \"\\f1d4\",\n \"broadcast-pin\": \"\\f1d5\",\n \"broadcast\": \"\\f1d6\",\n \"brush-fill\": \"\\f1d7\",\n \"brush\": \"\\f1d8\",\n \"bucket-fill\": \"\\f1d9\",\n \"bucket\": \"\\f1da\",\n \"bug-fill\": \"\\f1db\",\n \"bug\": \"\\f1dc\",\n \"building\": \"\\f1dd\",\n \"bullseye\": \"\\f1de\",\n \"calculator-fill\": \"\\f1df\",\n \"calculator\": \"\\f1e0\",\n \"calendar-check-fill\": \"\\f1e1\",\n \"calendar-check\": \"\\f1e2\",\n \"calendar-date-fill\": \"\\f1e3\",\n \"calendar-date\": \"\\f1e4\",\n \"calendar-day-fill\": \"\\f1e5\",\n \"calendar-day\": \"\\f1e6\",\n \"calendar-event-fill\": \"\\f1e7\",\n \"calendar-event\": \"\\f1e8\",\n \"calendar-fill\": \"\\f1e9\",\n \"calendar-minus-fill\": \"\\f1ea\",\n \"calendar-minus\": \"\\f1eb\",\n \"calendar-month-fill\": \"\\f1ec\",\n \"calendar-month\": \"\\f1ed\",\n \"calendar-plus-fill\": \"\\f1ee\",\n \"calendar-plus\": \"\\f1ef\",\n \"calendar-range-fill\": \"\\f1f0\",\n \"calendar-range\": \"\\f1f1\",\n \"calendar-week-fill\": \"\\f1f2\",\n \"calendar-week\": \"\\f1f3\",\n \"calendar-x-fill\": \"\\f1f4\",\n \"calendar-x\": \"\\f1f5\",\n \"calendar\": \"\\f1f6\",\n \"calendar2-check-fill\": \"\\f1f7\",\n \"calendar2-check\": \"\\f1f8\",\n \"calendar2-date-fill\": \"\\f1f9\",\n \"calendar2-date\": \"\\f1fa\",\n \"calendar2-day-fill\": \"\\f1fb\",\n \"calendar2-day\": \"\\f1fc\",\n \"calendar2-event-fill\": \"\\f1fd\",\n \"calendar2-event\": \"\\f1fe\",\n \"calendar2-fill\": \"\\f1ff\",\n \"calendar2-minus-fill\": \"\\f200\",\n \"calendar2-minus\": \"\\f201\",\n \"calendar2-month-fill\": \"\\f202\",\n \"calendar2-month\": \"\\f203\",\n \"calendar2-plus-fill\": \"\\f204\",\n \"calendar2-plus\": \"\\f205\",\n \"calendar2-range-fill\": \"\\f206\",\n \"calendar2-range\": \"\\f207\",\n \"calendar2-week-fill\": \"\\f208\",\n \"calendar2-week\": \"\\f209\",\n \"calendar2-x-fill\": \"\\f20a\",\n \"calendar2-x\": \"\\f20b\",\n \"calendar2\": \"\\f20c\",\n \"calendar3-event-fill\": \"\\f20d\",\n \"calendar3-event\": \"\\f20e\",\n \"calendar3-fill\": \"\\f20f\",\n \"calendar3-range-fill\": \"\\f210\",\n \"calendar3-range\": \"\\f211\",\n \"calendar3-week-fill\": \"\\f212\",\n \"calendar3-week\": \"\\f213\",\n \"calendar3\": \"\\f214\",\n \"calendar4-event\": \"\\f215\",\n \"calendar4-range\": \"\\f216\",\n \"calendar4-week\": \"\\f217\",\n \"calendar4\": \"\\f218\",\n \"camera-fill\": \"\\f219\",\n \"camera-reels-fill\": \"\\f21a\",\n \"camera-reels\": \"\\f21b\",\n \"camera-video-fill\": \"\\f21c\",\n \"camera-video-off-fill\": \"\\f21d\",\n \"camera-video-off\": \"\\f21e\",\n \"camera-video\": \"\\f21f\",\n \"camera\": \"\\f220\",\n \"camera2\": \"\\f221\",\n \"capslock-fill\": \"\\f222\",\n \"capslock\": \"\\f223\",\n \"card-checklist\": \"\\f224\",\n \"card-heading\": \"\\f225\",\n \"card-image\": \"\\f226\",\n \"card-list\": \"\\f227\",\n \"card-text\": \"\\f228\",\n \"caret-down-fill\": \"\\f229\",\n \"caret-down-square-fill\": \"\\f22a\",\n \"caret-down-square\": \"\\f22b\",\n \"caret-down\": \"\\f22c\",\n \"caret-left-fill\": \"\\f22d\",\n \"caret-left-square-fill\": \"\\f22e\",\n \"caret-left-square\": \"\\f22f\",\n \"caret-left\": \"\\f230\",\n \"caret-right-fill\": \"\\f231\",\n \"caret-right-square-fill\": \"\\f232\",\n \"caret-right-square\": \"\\f233\",\n \"caret-right\": \"\\f234\",\n \"caret-up-fill\": \"\\f235\",\n \"caret-up-square-fill\": \"\\f236\",\n \"caret-up-square\": \"\\f237\",\n \"caret-up\": \"\\f238\",\n \"cart-check-fill\": \"\\f239\",\n \"cart-check\": \"\\f23a\",\n \"cart-dash-fill\": \"\\f23b\",\n \"cart-dash\": \"\\f23c\",\n \"cart-fill\": \"\\f23d\",\n \"cart-plus-fill\": \"\\f23e\",\n \"cart-plus\": \"\\f23f\",\n \"cart-x-fill\": \"\\f240\",\n \"cart-x\": \"\\f241\",\n \"cart\": \"\\f242\",\n \"cart2\": \"\\f243\",\n \"cart3\": \"\\f244\",\n \"cart4\": \"\\f245\",\n \"cash-stack\": \"\\f246\",\n \"cash\": \"\\f247\",\n \"cast\": \"\\f248\",\n \"chat-dots-fill\": \"\\f249\",\n \"chat-dots\": \"\\f24a\",\n \"chat-fill\": \"\\f24b\",\n \"chat-left-dots-fill\": \"\\f24c\",\n \"chat-left-dots\": \"\\f24d\",\n \"chat-left-fill\": \"\\f24e\",\n \"chat-left-quote-fill\": \"\\f24f\",\n \"chat-left-quote\": \"\\f250\",\n \"chat-left-text-fill\": \"\\f251\",\n \"chat-left-text\": \"\\f252\",\n \"chat-left\": \"\\f253\",\n \"chat-quote-fill\": \"\\f254\",\n \"chat-quote\": \"\\f255\",\n \"chat-right-dots-fill\": \"\\f256\",\n \"chat-right-dots\": \"\\f257\",\n \"chat-right-fill\": \"\\f258\",\n \"chat-right-quote-fill\": \"\\f259\",\n \"chat-right-quote\": \"\\f25a\",\n \"chat-right-text-fill\": \"\\f25b\",\n \"chat-right-text\": \"\\f25c\",\n \"chat-right\": \"\\f25d\",\n \"chat-square-dots-fill\": \"\\f25e\",\n \"chat-square-dots\": \"\\f25f\",\n \"chat-square-fill\": \"\\f260\",\n \"chat-square-quote-fill\": \"\\f261\",\n \"chat-square-quote\": \"\\f262\",\n \"chat-square-text-fill\": \"\\f263\",\n \"chat-square-text\": \"\\f264\",\n \"chat-square\": \"\\f265\",\n \"chat-text-fill\": \"\\f266\",\n \"chat-text\": \"\\f267\",\n \"chat\": \"\\f268\",\n \"check-all\": \"\\f269\",\n \"check-circle-fill\": \"\\f26a\",\n \"check-circle\": \"\\f26b\",\n \"check-square-fill\": \"\\f26c\",\n \"check-square\": \"\\f26d\",\n \"check\": \"\\f26e\",\n \"check2-all\": \"\\f26f\",\n \"check2-circle\": \"\\f270\",\n \"check2-square\": \"\\f271\",\n \"check2\": \"\\f272\",\n \"chevron-bar-contract\": \"\\f273\",\n \"chevron-bar-down\": \"\\f274\",\n \"chevron-bar-expand\": \"\\f275\",\n \"chevron-bar-left\": \"\\f276\",\n \"chevron-bar-right\": \"\\f277\",\n \"chevron-bar-up\": \"\\f278\",\n \"chevron-compact-down\": \"\\f279\",\n \"chevron-compact-left\": \"\\f27a\",\n \"chevron-compact-right\": \"\\f27b\",\n \"chevron-compact-up\": \"\\f27c\",\n \"chevron-contract\": \"\\f27d\",\n \"chevron-double-down\": \"\\f27e\",\n \"chevron-double-left\": \"\\f27f\",\n \"chevron-double-right\": \"\\f280\",\n \"chevron-double-up\": \"\\f281\",\n \"chevron-down\": \"\\f282\",\n \"chevron-expand\": \"\\f283\",\n \"chevron-left\": \"\\f284\",\n \"chevron-right\": \"\\f285\",\n \"chevron-up\": \"\\f286\",\n \"circle-fill\": \"\\f287\",\n \"circle-half\": \"\\f288\",\n \"circle-square\": \"\\f289\",\n \"circle\": \"\\f28a\",\n \"clipboard-check\": \"\\f28b\",\n \"clipboard-data\": \"\\f28c\",\n \"clipboard-minus\": \"\\f28d\",\n \"clipboard-plus\": \"\\f28e\",\n \"clipboard-x\": \"\\f28f\",\n \"clipboard\": \"\\f290\",\n \"clock-fill\": \"\\f291\",\n \"clock-history\": \"\\f292\",\n \"clock\": \"\\f293\",\n \"cloud-arrow-down-fill\": \"\\f294\",\n \"cloud-arrow-down\": \"\\f295\",\n \"cloud-arrow-up-fill\": \"\\f296\",\n \"cloud-arrow-up\": \"\\f297\",\n \"cloud-check-fill\": \"\\f298\",\n \"cloud-check\": \"\\f299\",\n \"cloud-download-fill\": \"\\f29a\",\n \"cloud-download\": \"\\f29b\",\n \"cloud-drizzle-fill\": \"\\f29c\",\n \"cloud-drizzle\": \"\\f29d\",\n \"cloud-fill\": \"\\f29e\",\n \"cloud-fog-fill\": \"\\f29f\",\n \"cloud-fog\": \"\\f2a0\",\n \"cloud-fog2-fill\": \"\\f2a1\",\n \"cloud-fog2\": \"\\f2a2\",\n \"cloud-hail-fill\": \"\\f2a3\",\n \"cloud-hail\": \"\\f2a4\",\n \"cloud-haze-fill\": \"\\f2a6\",\n \"cloud-haze\": \"\\f2a7\",\n \"cloud-haze2-fill\": \"\\f2a8\",\n \"cloud-lightning-fill\": \"\\f2a9\",\n \"cloud-lightning-rain-fill\": \"\\f2aa\",\n \"cloud-lightning-rain\": \"\\f2ab\",\n \"cloud-lightning\": \"\\f2ac\",\n \"cloud-minus-fill\": \"\\f2ad\",\n \"cloud-minus\": \"\\f2ae\",\n \"cloud-moon-fill\": \"\\f2af\",\n \"cloud-moon\": \"\\f2b0\",\n \"cloud-plus-fill\": \"\\f2b1\",\n \"cloud-plus\": \"\\f2b2\",\n \"cloud-rain-fill\": \"\\f2b3\",\n \"cloud-rain-heavy-fill\": \"\\f2b4\",\n \"cloud-rain-heavy\": \"\\f2b5\",\n \"cloud-rain\": \"\\f2b6\",\n \"cloud-slash-fill\": \"\\f2b7\",\n \"cloud-slash\": \"\\f2b8\",\n \"cloud-sleet-fill\": \"\\f2b9\",\n \"cloud-sleet\": \"\\f2ba\",\n \"cloud-snow-fill\": \"\\f2bb\",\n \"cloud-snow\": \"\\f2bc\",\n \"cloud-sun-fill\": \"\\f2bd\",\n \"cloud-sun\": \"\\f2be\",\n \"cloud-upload-fill\": \"\\f2bf\",\n \"cloud-upload\": \"\\f2c0\",\n \"cloud\": \"\\f2c1\",\n \"clouds-fill\": \"\\f2c2\",\n \"clouds\": \"\\f2c3\",\n \"cloudy-fill\": \"\\f2c4\",\n \"cloudy\": \"\\f2c5\",\n \"code-slash\": \"\\f2c6\",\n \"code-square\": \"\\f2c7\",\n \"code\": \"\\f2c8\",\n \"collection-fill\": \"\\f2c9\",\n \"collection-play-fill\": \"\\f2ca\",\n \"collection-play\": \"\\f2cb\",\n \"collection\": \"\\f2cc\",\n \"columns-gap\": \"\\f2cd\",\n \"columns\": \"\\f2ce\",\n \"command\": \"\\f2cf\",\n \"compass-fill\": \"\\f2d0\",\n \"compass\": \"\\f2d1\",\n \"cone-striped\": \"\\f2d2\",\n \"cone\": \"\\f2d3\",\n \"controller\": \"\\f2d4\",\n \"cpu-fill\": \"\\f2d5\",\n \"cpu\": \"\\f2d6\",\n \"credit-card-2-back-fill\": \"\\f2d7\",\n \"credit-card-2-back\": \"\\f2d8\",\n \"credit-card-2-front-fill\": \"\\f2d9\",\n \"credit-card-2-front\": \"\\f2da\",\n \"credit-card-fill\": \"\\f2db\",\n \"credit-card\": \"\\f2dc\",\n \"crop\": \"\\f2dd\",\n \"cup-fill\": \"\\f2de\",\n \"cup-straw\": \"\\f2df\",\n \"cup\": \"\\f2e0\",\n \"cursor-fill\": \"\\f2e1\",\n \"cursor-text\": \"\\f2e2\",\n \"cursor\": \"\\f2e3\",\n \"dash-circle-dotted\": \"\\f2e4\",\n \"dash-circle-fill\": \"\\f2e5\",\n \"dash-circle\": \"\\f2e6\",\n \"dash-square-dotted\": \"\\f2e7\",\n \"dash-square-fill\": \"\\f2e8\",\n \"dash-square\": \"\\f2e9\",\n \"dash\": \"\\f2ea\",\n \"diagram-2-fill\": \"\\f2eb\",\n \"diagram-2\": \"\\f2ec\",\n \"diagram-3-fill\": \"\\f2ed\",\n \"diagram-3\": \"\\f2ee\",\n \"diamond-fill\": \"\\f2ef\",\n \"diamond-half\": \"\\f2f0\",\n \"diamond\": \"\\f2f1\",\n \"dice-1-fill\": \"\\f2f2\",\n \"dice-1\": \"\\f2f3\",\n \"dice-2-fill\": \"\\f2f4\",\n \"dice-2\": \"\\f2f5\",\n \"dice-3-fill\": \"\\f2f6\",\n \"dice-3\": \"\\f2f7\",\n \"dice-4-fill\": \"\\f2f8\",\n \"dice-4\": \"\\f2f9\",\n \"dice-5-fill\": \"\\f2fa\",\n \"dice-5\": \"\\f2fb\",\n \"dice-6-fill\": \"\\f2fc\",\n \"dice-6\": \"\\f2fd\",\n \"disc-fill\": \"\\f2fe\",\n \"disc\": \"\\f2ff\",\n \"discord\": \"\\f300\",\n \"display-fill\": \"\\f301\",\n \"display\": \"\\f302\",\n \"distribute-horizontal\": \"\\f303\",\n \"distribute-vertical\": \"\\f304\",\n \"door-closed-fill\": \"\\f305\",\n \"door-closed\": \"\\f306\",\n \"door-open-fill\": \"\\f307\",\n \"door-open\": \"\\f308\",\n \"dot\": \"\\f309\",\n \"download\": \"\\f30a\",\n \"droplet-fill\": \"\\f30b\",\n \"droplet-half\": \"\\f30c\",\n \"droplet\": \"\\f30d\",\n \"earbuds\": \"\\f30e\",\n \"easel-fill\": \"\\f30f\",\n \"easel\": \"\\f310\",\n \"egg-fill\": \"\\f311\",\n \"egg-fried\": \"\\f312\",\n \"egg\": \"\\f313\",\n \"eject-fill\": \"\\f314\",\n \"eject\": \"\\f315\",\n \"emoji-angry-fill\": \"\\f316\",\n \"emoji-angry\": \"\\f317\",\n \"emoji-dizzy-fill\": \"\\f318\",\n \"emoji-dizzy\": \"\\f319\",\n \"emoji-expressionless-fill\": \"\\f31a\",\n \"emoji-expressionless\": \"\\f31b\",\n \"emoji-frown-fill\": \"\\f31c\",\n \"emoji-frown\": \"\\f31d\",\n \"emoji-heart-eyes-fill\": \"\\f31e\",\n \"emoji-heart-eyes\": \"\\f31f\",\n \"emoji-laughing-fill\": \"\\f320\",\n \"emoji-laughing\": \"\\f321\",\n \"emoji-neutral-fill\": \"\\f322\",\n \"emoji-neutral\": \"\\f323\",\n \"emoji-smile-fill\": \"\\f324\",\n \"emoji-smile-upside-down-fill\": \"\\f325\",\n \"emoji-smile-upside-down\": \"\\f326\",\n \"emoji-smile\": \"\\f327\",\n \"emoji-sunglasses-fill\": \"\\f328\",\n \"emoji-sunglasses\": \"\\f329\",\n \"emoji-wink-fill\": \"\\f32a\",\n \"emoji-wink\": \"\\f32b\",\n \"envelope-fill\": \"\\f32c\",\n \"envelope-open-fill\": \"\\f32d\",\n \"envelope-open\": \"\\f32e\",\n \"envelope\": \"\\f32f\",\n \"eraser-fill\": \"\\f330\",\n \"eraser\": \"\\f331\",\n \"exclamation-circle-fill\": \"\\f332\",\n \"exclamation-circle\": \"\\f333\",\n \"exclamation-diamond-fill\": \"\\f334\",\n \"exclamation-diamond\": \"\\f335\",\n \"exclamation-octagon-fill\": \"\\f336\",\n \"exclamation-octagon\": \"\\f337\",\n \"exclamation-square-fill\": \"\\f338\",\n \"exclamation-square\": \"\\f339\",\n \"exclamation-triangle-fill\": \"\\f33a\",\n \"exclamation-triangle\": \"\\f33b\",\n \"exclamation\": \"\\f33c\",\n \"exclude\": \"\\f33d\",\n \"eye-fill\": \"\\f33e\",\n \"eye-slash-fill\": \"\\f33f\",\n \"eye-slash\": \"\\f340\",\n \"eye\": \"\\f341\",\n \"eyedropper\": \"\\f342\",\n \"eyeglasses\": \"\\f343\",\n \"facebook\": \"\\f344\",\n \"file-arrow-down-fill\": \"\\f345\",\n \"file-arrow-down\": \"\\f346\",\n \"file-arrow-up-fill\": \"\\f347\",\n \"file-arrow-up\": \"\\f348\",\n \"file-bar-graph-fill\": \"\\f349\",\n \"file-bar-graph\": \"\\f34a\",\n \"file-binary-fill\": \"\\f34b\",\n \"file-binary\": \"\\f34c\",\n \"file-break-fill\": \"\\f34d\",\n \"file-break\": \"\\f34e\",\n \"file-check-fill\": \"\\f34f\",\n \"file-check\": \"\\f350\",\n \"file-code-fill\": \"\\f351\",\n \"file-code\": \"\\f352\",\n \"file-diff-fill\": \"\\f353\",\n \"file-diff\": \"\\f354\",\n \"file-earmark-arrow-down-fill\": \"\\f355\",\n \"file-earmark-arrow-down\": \"\\f356\",\n \"file-earmark-arrow-up-fill\": \"\\f357\",\n \"file-earmark-arrow-up\": \"\\f358\",\n \"file-earmark-bar-graph-fill\": \"\\f359\",\n \"file-earmark-bar-graph\": \"\\f35a\",\n \"file-earmark-binary-fill\": \"\\f35b\",\n \"file-earmark-binary\": \"\\f35c\",\n \"file-earmark-break-fill\": \"\\f35d\",\n \"file-earmark-break\": \"\\f35e\",\n \"file-earmark-check-fill\": \"\\f35f\",\n \"file-earmark-check\": \"\\f360\",\n \"file-earmark-code-fill\": \"\\f361\",\n \"file-earmark-code\": \"\\f362\",\n \"file-earmark-diff-fill\": \"\\f363\",\n \"file-earmark-diff\": \"\\f364\",\n \"file-earmark-easel-fill\": \"\\f365\",\n \"file-earmark-easel\": \"\\f366\",\n \"file-earmark-excel-fill\": \"\\f367\",\n \"file-earmark-excel\": \"\\f368\",\n \"file-earmark-fill\": \"\\f369\",\n \"file-earmark-font-fill\": \"\\f36a\",\n \"file-earmark-font\": \"\\f36b\",\n \"file-earmark-image-fill\": \"\\f36c\",\n \"file-earmark-image\": \"\\f36d\",\n \"file-earmark-lock-fill\": \"\\f36e\",\n \"file-earmark-lock\": \"\\f36f\",\n \"file-earmark-lock2-fill\": \"\\f370\",\n \"file-earmark-lock2\": \"\\f371\",\n \"file-earmark-medical-fill\": \"\\f372\",\n \"file-earmark-medical\": \"\\f373\",\n \"file-earmark-minus-fill\": \"\\f374\",\n \"file-earmark-minus\": \"\\f375\",\n \"file-earmark-music-fill\": \"\\f376\",\n \"file-earmark-music\": \"\\f377\",\n \"file-earmark-person-fill\": \"\\f378\",\n \"file-earmark-person\": \"\\f379\",\n \"file-earmark-play-fill\": \"\\f37a\",\n \"file-earmark-play\": \"\\f37b\",\n \"file-earmark-plus-fill\": \"\\f37c\",\n \"file-earmark-plus\": \"\\f37d\",\n \"file-earmark-post-fill\": \"\\f37e\",\n \"file-earmark-post\": \"\\f37f\",\n \"file-earmark-ppt-fill\": \"\\f380\",\n \"file-earmark-ppt\": \"\\f381\",\n \"file-earmark-richtext-fill\": \"\\f382\",\n \"file-earmark-richtext\": \"\\f383\",\n \"file-earmark-ruled-fill\": \"\\f384\",\n \"file-earmark-ruled\": \"\\f385\",\n \"file-earmark-slides-fill\": \"\\f386\",\n \"file-earmark-slides\": \"\\f387\",\n \"file-earmark-spreadsheet-fill\": \"\\f388\",\n \"file-earmark-spreadsheet\": \"\\f389\",\n \"file-earmark-text-fill\": \"\\f38a\",\n \"file-earmark-text\": \"\\f38b\",\n \"file-earmark-word-fill\": \"\\f38c\",\n \"file-earmark-word\": \"\\f38d\",\n \"file-earmark-x-fill\": \"\\f38e\",\n \"file-earmark-x\": \"\\f38f\",\n \"file-earmark-zip-fill\": \"\\f390\",\n \"file-earmark-zip\": \"\\f391\",\n \"file-earmark\": \"\\f392\",\n \"file-easel-fill\": \"\\f393\",\n \"file-easel\": \"\\f394\",\n \"file-excel-fill\": \"\\f395\",\n \"file-excel\": \"\\f396\",\n \"file-fill\": \"\\f397\",\n \"file-font-fill\": \"\\f398\",\n \"file-font\": \"\\f399\",\n \"file-image-fill\": \"\\f39a\",\n \"file-image\": \"\\f39b\",\n \"file-lock-fill\": \"\\f39c\",\n \"file-lock\": \"\\f39d\",\n \"file-lock2-fill\": \"\\f39e\",\n \"file-lock2\": \"\\f39f\",\n \"file-medical-fill\": \"\\f3a0\",\n \"file-medical\": \"\\f3a1\",\n \"file-minus-fill\": \"\\f3a2\",\n \"file-minus\": \"\\f3a3\",\n \"file-music-fill\": \"\\f3a4\",\n \"file-music\": \"\\f3a5\",\n \"file-person-fill\": \"\\f3a6\",\n \"file-person\": \"\\f3a7\",\n \"file-play-fill\": \"\\f3a8\",\n \"file-play\": \"\\f3a9\",\n \"file-plus-fill\": \"\\f3aa\",\n \"file-plus\": \"\\f3ab\",\n \"file-post-fill\": \"\\f3ac\",\n \"file-post\": \"\\f3ad\",\n \"file-ppt-fill\": \"\\f3ae\",\n \"file-ppt\": \"\\f3af\",\n \"file-richtext-fill\": \"\\f3b0\",\n \"file-richtext\": \"\\f3b1\",\n \"file-ruled-fill\": \"\\f3b2\",\n \"file-ruled\": \"\\f3b3\",\n \"file-slides-fill\": \"\\f3b4\",\n \"file-slides\": \"\\f3b5\",\n \"file-spreadsheet-fill\": \"\\f3b6\",\n \"file-spreadsheet\": \"\\f3b7\",\n \"file-text-fill\": \"\\f3b8\",\n \"file-text\": \"\\f3b9\",\n \"file-word-fill\": \"\\f3ba\",\n \"file-word\": \"\\f3bb\",\n \"file-x-fill\": \"\\f3bc\",\n \"file-x\": \"\\f3bd\",\n \"file-zip-fill\": \"\\f3be\",\n \"file-zip\": \"\\f3bf\",\n \"file\": \"\\f3c0\",\n \"files-alt\": \"\\f3c1\",\n \"files\": \"\\f3c2\",\n \"film\": \"\\f3c3\",\n \"filter-circle-fill\": \"\\f3c4\",\n \"filter-circle\": \"\\f3c5\",\n \"filter-left\": \"\\f3c6\",\n \"filter-right\": \"\\f3c7\",\n \"filter-square-fill\": \"\\f3c8\",\n \"filter-square\": \"\\f3c9\",\n \"filter\": \"\\f3ca\",\n \"flag-fill\": \"\\f3cb\",\n \"flag\": \"\\f3cc\",\n \"flower1\": \"\\f3cd\",\n \"flower2\": \"\\f3ce\",\n \"flower3\": \"\\f3cf\",\n \"folder-check\": \"\\f3d0\",\n \"folder-fill\": \"\\f3d1\",\n \"folder-minus\": \"\\f3d2\",\n \"folder-plus\": \"\\f3d3\",\n \"folder-symlink-fill\": \"\\f3d4\",\n \"folder-symlink\": \"\\f3d5\",\n \"folder-x\": \"\\f3d6\",\n \"folder\": \"\\f3d7\",\n \"folder2-open\": \"\\f3d8\",\n \"folder2\": \"\\f3d9\",\n \"fonts\": \"\\f3da\",\n \"forward-fill\": \"\\f3db\",\n \"forward\": \"\\f3dc\",\n \"front\": \"\\f3dd\",\n \"fullscreen-exit\": \"\\f3de\",\n \"fullscreen\": \"\\f3df\",\n \"funnel-fill\": \"\\f3e0\",\n \"funnel\": \"\\f3e1\",\n \"gear-fill\": \"\\f3e2\",\n \"gear-wide-connected\": \"\\f3e3\",\n \"gear-wide\": \"\\f3e4\",\n \"gear\": \"\\f3e5\",\n \"gem\": \"\\f3e6\",\n \"geo-alt-fill\": \"\\f3e7\",\n \"geo-alt\": \"\\f3e8\",\n \"geo-fill\": \"\\f3e9\",\n \"geo\": \"\\f3ea\",\n \"gift-fill\": \"\\f3eb\",\n \"gift\": \"\\f3ec\",\n \"github\": \"\\f3ed\",\n \"globe\": \"\\f3ee\",\n \"globe2\": \"\\f3ef\",\n \"google\": \"\\f3f0\",\n \"graph-down\": \"\\f3f1\",\n \"graph-up\": \"\\f3f2\",\n \"grid-1x2-fill\": \"\\f3f3\",\n \"grid-1x2\": \"\\f3f4\",\n \"grid-3x2-gap-fill\": \"\\f3f5\",\n \"grid-3x2-gap\": \"\\f3f6\",\n \"grid-3x2\": \"\\f3f7\",\n \"grid-3x3-gap-fill\": \"\\f3f8\",\n \"grid-3x3-gap\": \"\\f3f9\",\n \"grid-3x3\": \"\\f3fa\",\n \"grid-fill\": \"\\f3fb\",\n \"grid\": \"\\f3fc\",\n \"grip-horizontal\": \"\\f3fd\",\n \"grip-vertical\": \"\\f3fe\",\n \"hammer\": \"\\f3ff\",\n \"hand-index-fill\": \"\\f400\",\n \"hand-index-thumb-fill\": \"\\f401\",\n \"hand-index-thumb\": \"\\f402\",\n \"hand-index\": \"\\f403\",\n \"hand-thumbs-down-fill\": \"\\f404\",\n \"hand-thumbs-down\": \"\\f405\",\n \"hand-thumbs-up-fill\": \"\\f406\",\n \"hand-thumbs-up\": \"\\f407\",\n \"handbag-fill\": \"\\f408\",\n \"handbag\": \"\\f409\",\n \"hash\": \"\\f40a\",\n \"hdd-fill\": \"\\f40b\",\n \"hdd-network-fill\": \"\\f40c\",\n \"hdd-network\": \"\\f40d\",\n \"hdd-rack-fill\": \"\\f40e\",\n \"hdd-rack\": \"\\f40f\",\n \"hdd-stack-fill\": \"\\f410\",\n \"hdd-stack\": \"\\f411\",\n \"hdd\": \"\\f412\",\n \"headphones\": \"\\f413\",\n \"headset\": \"\\f414\",\n \"heart-fill\": \"\\f415\",\n \"heart-half\": \"\\f416\",\n \"heart\": \"\\f417\",\n \"heptagon-fill\": \"\\f418\",\n \"heptagon-half\": \"\\f419\",\n \"heptagon\": \"\\f41a\",\n \"hexagon-fill\": \"\\f41b\",\n \"hexagon-half\": \"\\f41c\",\n \"hexagon\": \"\\f41d\",\n \"hourglass-bottom\": \"\\f41e\",\n \"hourglass-split\": \"\\f41f\",\n \"hourglass-top\": \"\\f420\",\n \"hourglass\": \"\\f421\",\n \"house-door-fill\": \"\\f422\",\n \"house-door\": \"\\f423\",\n \"house-fill\": \"\\f424\",\n \"house\": \"\\f425\",\n \"hr\": \"\\f426\",\n \"hurricane\": \"\\f427\",\n \"image-alt\": \"\\f428\",\n \"image-fill\": \"\\f429\",\n \"image\": \"\\f42a\",\n \"images\": \"\\f42b\",\n \"inbox-fill\": \"\\f42c\",\n \"inbox\": \"\\f42d\",\n \"inboxes-fill\": \"\\f42e\",\n \"inboxes\": \"\\f42f\",\n \"info-circle-fill\": \"\\f430\",\n \"info-circle\": \"\\f431\",\n \"info-square-fill\": \"\\f432\",\n \"info-square\": \"\\f433\",\n \"info\": \"\\f434\",\n \"input-cursor-text\": \"\\f435\",\n \"input-cursor\": \"\\f436\",\n \"instagram\": \"\\f437\",\n \"intersect\": \"\\f438\",\n \"journal-album\": \"\\f439\",\n \"journal-arrow-down\": \"\\f43a\",\n \"journal-arrow-up\": \"\\f43b\",\n \"journal-bookmark-fill\": \"\\f43c\",\n \"journal-bookmark\": \"\\f43d\",\n \"journal-check\": \"\\f43e\",\n \"journal-code\": \"\\f43f\",\n \"journal-medical\": \"\\f440\",\n \"journal-minus\": \"\\f441\",\n \"journal-plus\": \"\\f442\",\n \"journal-richtext\": \"\\f443\",\n \"journal-text\": \"\\f444\",\n \"journal-x\": \"\\f445\",\n \"journal\": \"\\f446\",\n \"journals\": \"\\f447\",\n \"joystick\": \"\\f448\",\n \"justify-left\": \"\\f449\",\n \"justify-right\": \"\\f44a\",\n \"justify\": \"\\f44b\",\n \"kanban-fill\": \"\\f44c\",\n \"kanban\": \"\\f44d\",\n \"key-fill\": \"\\f44e\",\n \"key\": \"\\f44f\",\n \"keyboard-fill\": \"\\f450\",\n \"keyboard\": \"\\f451\",\n \"ladder\": \"\\f452\",\n \"lamp-fill\": \"\\f453\",\n \"lamp\": \"\\f454\",\n \"laptop-fill\": \"\\f455\",\n \"laptop\": \"\\f456\",\n \"layer-backward\": \"\\f457\",\n \"layer-forward\": \"\\f458\",\n \"layers-fill\": \"\\f459\",\n \"layers-half\": \"\\f45a\",\n \"layers\": \"\\f45b\",\n \"layout-sidebar-inset-reverse\": \"\\f45c\",\n \"layout-sidebar-inset\": \"\\f45d\",\n \"layout-sidebar-reverse\": \"\\f45e\",\n \"layout-sidebar\": \"\\f45f\",\n \"layout-split\": \"\\f460\",\n \"layout-text-sidebar-reverse\": \"\\f461\",\n \"layout-text-sidebar\": \"\\f462\",\n \"layout-text-window-reverse\": \"\\f463\",\n \"layout-text-window\": \"\\f464\",\n \"layout-three-columns\": \"\\f465\",\n \"layout-wtf\": \"\\f466\",\n \"life-preserver\": \"\\f467\",\n \"lightbulb-fill\": \"\\f468\",\n \"lightbulb-off-fill\": \"\\f469\",\n \"lightbulb-off\": \"\\f46a\",\n \"lightbulb\": \"\\f46b\",\n \"lightning-charge-fill\": \"\\f46c\",\n \"lightning-charge\": \"\\f46d\",\n \"lightning-fill\": \"\\f46e\",\n \"lightning\": \"\\f46f\",\n \"link-45deg\": \"\\f470\",\n \"link\": \"\\f471\",\n \"linkedin\": \"\\f472\",\n \"list-check\": \"\\f473\",\n \"list-nested\": \"\\f474\",\n \"list-ol\": \"\\f475\",\n \"list-stars\": \"\\f476\",\n \"list-task\": \"\\f477\",\n \"list-ul\": \"\\f478\",\n \"list\": \"\\f479\",\n \"lock-fill\": \"\\f47a\",\n \"lock\": \"\\f47b\",\n \"mailbox\": \"\\f47c\",\n \"mailbox2\": \"\\f47d\",\n \"map-fill\": \"\\f47e\",\n \"map\": \"\\f47f\",\n \"markdown-fill\": \"\\f480\",\n \"markdown\": \"\\f481\",\n \"mask\": \"\\f482\",\n \"megaphone-fill\": \"\\f483\",\n \"megaphone\": \"\\f484\",\n \"menu-app-fill\": \"\\f485\",\n \"menu-app\": \"\\f486\",\n \"menu-button-fill\": \"\\f487\",\n \"menu-button-wide-fill\": \"\\f488\",\n \"menu-button-wide\": \"\\f489\",\n \"menu-button\": \"\\f48a\",\n \"menu-down\": \"\\f48b\",\n \"menu-up\": \"\\f48c\",\n \"mic-fill\": \"\\f48d\",\n \"mic-mute-fill\": \"\\f48e\",\n \"mic-mute\": \"\\f48f\",\n \"mic\": \"\\f490\",\n \"minecart-loaded\": \"\\f491\",\n \"minecart\": \"\\f492\",\n \"moisture\": \"\\f493\",\n \"moon-fill\": \"\\f494\",\n \"moon-stars-fill\": \"\\f495\",\n \"moon-stars\": \"\\f496\",\n \"moon\": \"\\f497\",\n \"mouse-fill\": \"\\f498\",\n \"mouse\": \"\\f499\",\n \"mouse2-fill\": \"\\f49a\",\n \"mouse2\": \"\\f49b\",\n \"mouse3-fill\": \"\\f49c\",\n \"mouse3\": \"\\f49d\",\n \"music-note-beamed\": \"\\f49e\",\n \"music-note-list\": \"\\f49f\",\n \"music-note\": \"\\f4a0\",\n \"music-player-fill\": \"\\f4a1\",\n \"music-player\": \"\\f4a2\",\n \"newspaper\": \"\\f4a3\",\n \"node-minus-fill\": \"\\f4a4\",\n \"node-minus\": \"\\f4a5\",\n \"node-plus-fill\": \"\\f4a6\",\n \"node-plus\": \"\\f4a7\",\n \"nut-fill\": \"\\f4a8\",\n \"nut\": \"\\f4a9\",\n \"octagon-fill\": \"\\f4aa\",\n \"octagon-half\": \"\\f4ab\",\n \"octagon\": \"\\f4ac\",\n \"option\": \"\\f4ad\",\n \"outlet\": \"\\f4ae\",\n \"paint-bucket\": \"\\f4af\",\n \"palette-fill\": \"\\f4b0\",\n \"palette\": \"\\f4b1\",\n \"palette2\": \"\\f4b2\",\n \"paperclip\": \"\\f4b3\",\n \"paragraph\": \"\\f4b4\",\n \"patch-check-fill\": \"\\f4b5\",\n \"patch-check\": \"\\f4b6\",\n \"patch-exclamation-fill\": \"\\f4b7\",\n \"patch-exclamation\": \"\\f4b8\",\n \"patch-minus-fill\": \"\\f4b9\",\n \"patch-minus\": \"\\f4ba\",\n \"patch-plus-fill\": \"\\f4bb\",\n \"patch-plus\": \"\\f4bc\",\n \"patch-question-fill\": \"\\f4bd\",\n \"patch-question\": \"\\f4be\",\n \"pause-btn-fill\": \"\\f4bf\",\n \"pause-btn\": \"\\f4c0\",\n \"pause-circle-fill\": \"\\f4c1\",\n \"pause-circle\": \"\\f4c2\",\n \"pause-fill\": \"\\f4c3\",\n \"pause\": \"\\f4c4\",\n \"peace-fill\": \"\\f4c5\",\n \"peace\": \"\\f4c6\",\n \"pen-fill\": \"\\f4c7\",\n \"pen\": \"\\f4c8\",\n \"pencil-fill\": \"\\f4c9\",\n \"pencil-square\": \"\\f4ca\",\n \"pencil\": \"\\f4cb\",\n \"pentagon-fill\": \"\\f4cc\",\n \"pentagon-half\": \"\\f4cd\",\n \"pentagon\": \"\\f4ce\",\n \"people-fill\": \"\\f4cf\",\n \"people\": \"\\f4d0\",\n \"percent\": \"\\f4d1\",\n \"person-badge-fill\": \"\\f4d2\",\n \"person-badge\": \"\\f4d3\",\n \"person-bounding-box\": \"\\f4d4\",\n \"person-check-fill\": \"\\f4d5\",\n \"person-check\": \"\\f4d6\",\n \"person-circle\": \"\\f4d7\",\n \"person-dash-fill\": \"\\f4d8\",\n \"person-dash\": \"\\f4d9\",\n \"person-fill\": \"\\f4da\",\n \"person-lines-fill\": \"\\f4db\",\n \"person-plus-fill\": \"\\f4dc\",\n \"person-plus\": \"\\f4dd\",\n \"person-square\": \"\\f4de\",\n \"person-x-fill\": \"\\f4df\",\n \"person-x\": \"\\f4e0\",\n \"person\": \"\\f4e1\",\n \"phone-fill\": \"\\f4e2\",\n \"phone-landscape-fill\": \"\\f4e3\",\n \"phone-landscape\": \"\\f4e4\",\n \"phone-vibrate-fill\": \"\\f4e5\",\n \"phone-vibrate\": \"\\f4e6\",\n \"phone\": \"\\f4e7\",\n \"pie-chart-fill\": \"\\f4e8\",\n \"pie-chart\": \"\\f4e9\",\n \"pin-angle-fill\": \"\\f4ea\",\n \"pin-angle\": \"\\f4eb\",\n \"pin-fill\": \"\\f4ec\",\n \"pin\": \"\\f4ed\",\n \"pip-fill\": \"\\f4ee\",\n \"pip\": \"\\f4ef\",\n \"play-btn-fill\": \"\\f4f0\",\n \"play-btn\": \"\\f4f1\",\n \"play-circle-fill\": \"\\f4f2\",\n \"play-circle\": \"\\f4f3\",\n \"play-fill\": \"\\f4f4\",\n \"play\": \"\\f4f5\",\n \"plug-fill\": \"\\f4f6\",\n \"plug\": \"\\f4f7\",\n \"plus-circle-dotted\": \"\\f4f8\",\n \"plus-circle-fill\": \"\\f4f9\",\n \"plus-circle\": \"\\f4fa\",\n \"plus-square-dotted\": \"\\f4fb\",\n \"plus-square-fill\": \"\\f4fc\",\n \"plus-square\": \"\\f4fd\",\n \"plus\": \"\\f4fe\",\n \"power\": \"\\f4ff\",\n \"printer-fill\": \"\\f500\",\n \"printer\": \"\\f501\",\n \"puzzle-fill\": \"\\f502\",\n \"puzzle\": \"\\f503\",\n \"question-circle-fill\": \"\\f504\",\n \"question-circle\": \"\\f505\",\n \"question-diamond-fill\": \"\\f506\",\n \"question-diamond\": \"\\f507\",\n \"question-octagon-fill\": \"\\f508\",\n \"question-octagon\": \"\\f509\",\n \"question-square-fill\": \"\\f50a\",\n \"question-square\": \"\\f50b\",\n \"question\": \"\\f50c\",\n \"rainbow\": \"\\f50d\",\n \"receipt-cutoff\": \"\\f50e\",\n \"receipt\": \"\\f50f\",\n \"reception-0\": \"\\f510\",\n \"reception-1\": \"\\f511\",\n \"reception-2\": \"\\f512\",\n \"reception-3\": \"\\f513\",\n \"reception-4\": \"\\f514\",\n \"record-btn-fill\": \"\\f515\",\n \"record-btn\": \"\\f516\",\n \"record-circle-fill\": \"\\f517\",\n \"record-circle\": \"\\f518\",\n \"record-fill\": \"\\f519\",\n \"record\": \"\\f51a\",\n \"record2-fill\": \"\\f51b\",\n \"record2\": \"\\f51c\",\n \"reply-all-fill\": \"\\f51d\",\n \"reply-all\": \"\\f51e\",\n \"reply-fill\": \"\\f51f\",\n \"reply\": \"\\f520\",\n \"rss-fill\": \"\\f521\",\n \"rss\": \"\\f522\",\n \"rulers\": \"\\f523\",\n \"save-fill\": \"\\f524\",\n \"save\": \"\\f525\",\n \"save2-fill\": \"\\f526\",\n \"save2\": \"\\f527\",\n \"scissors\": \"\\f528\",\n \"screwdriver\": \"\\f529\",\n \"search\": \"\\f52a\",\n \"segmented-nav\": \"\\f52b\",\n \"server\": \"\\f52c\",\n \"share-fill\": \"\\f52d\",\n \"share\": \"\\f52e\",\n \"shield-check\": \"\\f52f\",\n \"shield-exclamation\": \"\\f530\",\n \"shield-fill-check\": \"\\f531\",\n \"shield-fill-exclamation\": \"\\f532\",\n \"shield-fill-minus\": \"\\f533\",\n \"shield-fill-plus\": \"\\f534\",\n \"shield-fill-x\": \"\\f535\",\n \"shield-fill\": \"\\f536\",\n \"shield-lock-fill\": \"\\f537\",\n \"shield-lock\": \"\\f538\",\n \"shield-minus\": \"\\f539\",\n \"shield-plus\": \"\\f53a\",\n \"shield-shaded\": \"\\f53b\",\n \"shield-slash-fill\": \"\\f53c\",\n \"shield-slash\": \"\\f53d\",\n \"shield-x\": \"\\f53e\",\n \"shield\": \"\\f53f\",\n \"shift-fill\": \"\\f540\",\n \"shift\": \"\\f541\",\n \"shop-window\": \"\\f542\",\n \"shop\": \"\\f543\",\n \"shuffle\": \"\\f544\",\n \"signpost-2-fill\": \"\\f545\",\n \"signpost-2\": \"\\f546\",\n \"signpost-fill\": \"\\f547\",\n \"signpost-split-fill\": \"\\f548\",\n \"signpost-split\": \"\\f549\",\n \"signpost\": \"\\f54a\",\n \"sim-fill\": \"\\f54b\",\n \"sim\": \"\\f54c\",\n \"skip-backward-btn-fill\": \"\\f54d\",\n \"skip-backward-btn\": \"\\f54e\",\n \"skip-backward-circle-fill\": \"\\f54f\",\n \"skip-backward-circle\": \"\\f550\",\n \"skip-backward-fill\": \"\\f551\",\n \"skip-backward\": \"\\f552\",\n \"skip-end-btn-fill\": \"\\f553\",\n \"skip-end-btn\": \"\\f554\",\n \"skip-end-circle-fill\": \"\\f555\",\n \"skip-end-circle\": \"\\f556\",\n \"skip-end-fill\": \"\\f557\",\n \"skip-end\": \"\\f558\",\n \"skip-forward-btn-fill\": \"\\f559\",\n \"skip-forward-btn\": \"\\f55a\",\n \"skip-forward-circle-fill\": \"\\f55b\",\n \"skip-forward-circle\": \"\\f55c\",\n \"skip-forward-fill\": \"\\f55d\",\n \"skip-forward\": \"\\f55e\",\n \"skip-start-btn-fill\": \"\\f55f\",\n \"skip-start-btn\": \"\\f560\",\n \"skip-start-circle-fill\": \"\\f561\",\n \"skip-start-circle\": \"\\f562\",\n \"skip-start-fill\": \"\\f563\",\n \"skip-start\": \"\\f564\",\n \"slack\": \"\\f565\",\n \"slash-circle-fill\": \"\\f566\",\n \"slash-circle\": \"\\f567\",\n \"slash-square-fill\": \"\\f568\",\n \"slash-square\": \"\\f569\",\n \"slash\": \"\\f56a\",\n \"sliders\": \"\\f56b\",\n \"smartwatch\": \"\\f56c\",\n \"snow\": \"\\f56d\",\n \"snow2\": \"\\f56e\",\n \"snow3\": \"\\f56f\",\n \"sort-alpha-down-alt\": \"\\f570\",\n \"sort-alpha-down\": \"\\f571\",\n \"sort-alpha-up-alt\": \"\\f572\",\n \"sort-alpha-up\": \"\\f573\",\n \"sort-down-alt\": \"\\f574\",\n \"sort-down\": \"\\f575\",\n \"sort-numeric-down-alt\": \"\\f576\",\n \"sort-numeric-down\": \"\\f577\",\n \"sort-numeric-up-alt\": \"\\f578\",\n \"sort-numeric-up\": \"\\f579\",\n \"sort-up-alt\": \"\\f57a\",\n \"sort-up\": \"\\f57b\",\n \"soundwave\": \"\\f57c\",\n \"speaker-fill\": \"\\f57d\",\n \"speaker\": \"\\f57e\",\n \"speedometer\": \"\\f57f\",\n \"speedometer2\": \"\\f580\",\n \"spellcheck\": \"\\f581\",\n \"square-fill\": \"\\f582\",\n \"square-half\": \"\\f583\",\n \"square\": \"\\f584\",\n \"stack\": \"\\f585\",\n \"star-fill\": \"\\f586\",\n \"star-half\": \"\\f587\",\n \"star\": \"\\f588\",\n \"stars\": \"\\f589\",\n \"stickies-fill\": \"\\f58a\",\n \"stickies\": \"\\f58b\",\n \"sticky-fill\": \"\\f58c\",\n \"sticky\": \"\\f58d\",\n \"stop-btn-fill\": \"\\f58e\",\n \"stop-btn\": \"\\f58f\",\n \"stop-circle-fill\": \"\\f590\",\n \"stop-circle\": \"\\f591\",\n \"stop-fill\": \"\\f592\",\n \"stop\": \"\\f593\",\n \"stoplights-fill\": \"\\f594\",\n \"stoplights\": \"\\f595\",\n \"stopwatch-fill\": \"\\f596\",\n \"stopwatch\": \"\\f597\",\n \"subtract\": \"\\f598\",\n \"suit-club-fill\": \"\\f599\",\n \"suit-club\": \"\\f59a\",\n \"suit-diamond-fill\": \"\\f59b\",\n \"suit-diamond\": \"\\f59c\",\n \"suit-heart-fill\": \"\\f59d\",\n \"suit-heart\": \"\\f59e\",\n \"suit-spade-fill\": \"\\f59f\",\n \"suit-spade\": \"\\f5a0\",\n \"sun-fill\": \"\\f5a1\",\n \"sun\": \"\\f5a2\",\n \"sunglasses\": \"\\f5a3\",\n \"sunrise-fill\": \"\\f5a4\",\n \"sunrise\": \"\\f5a5\",\n \"sunset-fill\": \"\\f5a6\",\n \"sunset\": \"\\f5a7\",\n \"symmetry-horizontal\": \"\\f5a8\",\n \"symmetry-vertical\": \"\\f5a9\",\n \"table\": \"\\f5aa\",\n \"tablet-fill\": \"\\f5ab\",\n \"tablet-landscape-fill\": \"\\f5ac\",\n \"tablet-landscape\": \"\\f5ad\",\n \"tablet\": \"\\f5ae\",\n \"tag-fill\": \"\\f5af\",\n \"tag\": \"\\f5b0\",\n \"tags-fill\": \"\\f5b1\",\n \"tags\": \"\\f5b2\",\n \"telegram\": \"\\f5b3\",\n \"telephone-fill\": \"\\f5b4\",\n \"telephone-forward-fill\": \"\\f5b5\",\n \"telephone-forward\": \"\\f5b6\",\n \"telephone-inbound-fill\": \"\\f5b7\",\n \"telephone-inbound\": \"\\f5b8\",\n \"telephone-minus-fill\": \"\\f5b9\",\n \"telephone-minus\": \"\\f5ba\",\n \"telephone-outbound-fill\": \"\\f5bb\",\n \"telephone-outbound\": \"\\f5bc\",\n \"telephone-plus-fill\": \"\\f5bd\",\n \"telephone-plus\": \"\\f5be\",\n \"telephone-x-fill\": \"\\f5bf\",\n \"telephone-x\": \"\\f5c0\",\n \"telephone\": \"\\f5c1\",\n \"terminal-fill\": \"\\f5c2\",\n \"terminal\": \"\\f5c3\",\n \"text-center\": \"\\f5c4\",\n \"text-indent-left\": \"\\f5c5\",\n \"text-indent-right\": \"\\f5c6\",\n \"text-left\": \"\\f5c7\",\n \"text-paragraph\": \"\\f5c8\",\n \"text-right\": \"\\f5c9\",\n \"textarea-resize\": \"\\f5ca\",\n \"textarea-t\": \"\\f5cb\",\n \"textarea\": \"\\f5cc\",\n \"thermometer-half\": \"\\f5cd\",\n \"thermometer-high\": \"\\f5ce\",\n \"thermometer-low\": \"\\f5cf\",\n \"thermometer-snow\": \"\\f5d0\",\n \"thermometer-sun\": \"\\f5d1\",\n \"thermometer\": \"\\f5d2\",\n \"three-dots-vertical\": \"\\f5d3\",\n \"three-dots\": \"\\f5d4\",\n \"toggle-off\": \"\\f5d5\",\n \"toggle-on\": \"\\f5d6\",\n \"toggle2-off\": \"\\f5d7\",\n \"toggle2-on\": \"\\f5d8\",\n \"toggles\": \"\\f5d9\",\n \"toggles2\": \"\\f5da\",\n \"tools\": \"\\f5db\",\n \"tornado\": \"\\f5dc\",\n \"trash-fill\": \"\\f5dd\",\n \"trash\": \"\\f5de\",\n \"trash2-fill\": \"\\f5df\",\n \"trash2\": \"\\f5e0\",\n \"tree-fill\": \"\\f5e1\",\n \"tree\": \"\\f5e2\",\n \"triangle-fill\": \"\\f5e3\",\n \"triangle-half\": \"\\f5e4\",\n \"triangle\": \"\\f5e5\",\n \"trophy-fill\": \"\\f5e6\",\n \"trophy\": \"\\f5e7\",\n \"tropical-storm\": \"\\f5e8\",\n \"truck-flatbed\": \"\\f5e9\",\n \"truck\": \"\\f5ea\",\n \"tsunami\": \"\\f5eb\",\n \"tv-fill\": \"\\f5ec\",\n \"tv\": \"\\f5ed\",\n \"twitch\": \"\\f5ee\",\n \"twitter\": \"\\f5ef\",\n \"type-bold\": \"\\f5f0\",\n \"type-h1\": \"\\f5f1\",\n \"type-h2\": \"\\f5f2\",\n \"type-h3\": \"\\f5f3\",\n \"type-italic\": \"\\f5f4\",\n \"type-strikethrough\": \"\\f5f5\",\n \"type-underline\": \"\\f5f6\",\n \"type\": \"\\f5f7\",\n \"ui-checks-grid\": \"\\f5f8\",\n \"ui-checks\": \"\\f5f9\",\n \"ui-radios-grid\": \"\\f5fa\",\n \"ui-radios\": \"\\f5fb\",\n \"umbrella-fill\": \"\\f5fc\",\n \"umbrella\": \"\\f5fd\",\n \"union\": \"\\f5fe\",\n \"unlock-fill\": \"\\f5ff\",\n \"unlock\": \"\\f600\",\n \"upc-scan\": \"\\f601\",\n \"upc\": \"\\f602\",\n \"upload\": \"\\f603\",\n \"vector-pen\": \"\\f604\",\n \"view-list\": \"\\f605\",\n \"view-stacked\": \"\\f606\",\n \"vinyl-fill\": \"\\f607\",\n \"vinyl\": \"\\f608\",\n \"voicemail\": \"\\f609\",\n \"volume-down-fill\": \"\\f60a\",\n \"volume-down\": \"\\f60b\",\n \"volume-mute-fill\": \"\\f60c\",\n \"volume-mute\": \"\\f60d\",\n \"volume-off-fill\": \"\\f60e\",\n \"volume-off\": \"\\f60f\",\n \"volume-up-fill\": \"\\f610\",\n \"volume-up\": \"\\f611\",\n \"vr\": \"\\f612\",\n \"wallet-fill\": \"\\f613\",\n \"wallet\": \"\\f614\",\n \"wallet2\": \"\\f615\",\n \"watch\": \"\\f616\",\n \"water\": \"\\f617\",\n \"whatsapp\": \"\\f618\",\n \"wifi-1\": \"\\f619\",\n \"wifi-2\": \"\\f61a\",\n \"wifi-off\": \"\\f61b\",\n \"wifi\": \"\\f61c\",\n \"wind\": \"\\f61d\",\n \"window-dock\": \"\\f61e\",\n \"window-sidebar\": \"\\f61f\",\n \"window\": \"\\f620\",\n \"wrench\": \"\\f621\",\n \"x-circle-fill\": \"\\f622\",\n \"x-circle\": \"\\f623\",\n \"x-diamond-fill\": \"\\f624\",\n \"x-diamond\": \"\\f625\",\n \"x-octagon-fill\": \"\\f626\",\n \"x-octagon\": \"\\f627\",\n \"x-square-fill\": \"\\f628\",\n \"x-square\": \"\\f629\",\n \"x\": \"\\f62a\",\n \"youtube\": \"\\f62b\",\n \"zoom-in\": \"\\f62c\",\n \"zoom-out\": \"\\f62d\",\n \"bank\": \"\\f62e\",\n \"bank2\": \"\\f62f\",\n \"bell-slash-fill\": \"\\f630\",\n \"bell-slash\": \"\\f631\",\n \"cash-coin\": \"\\f632\",\n \"check-lg\": \"\\f633\",\n \"coin\": \"\\f634\",\n \"currency-bitcoin\": \"\\f635\",\n \"currency-dollar\": \"\\f636\",\n \"currency-euro\": \"\\f637\",\n \"currency-exchange\": \"\\f638\",\n \"currency-pound\": \"\\f639\",\n \"currency-yen\": \"\\f63a\",\n \"dash-lg\": \"\\f63b\",\n \"exclamation-lg\": \"\\f63c\",\n \"file-earmark-pdf-fill\": \"\\f63d\",\n \"file-earmark-pdf\": \"\\f63e\",\n \"file-pdf-fill\": \"\\f63f\",\n \"file-pdf\": \"\\f640\",\n \"gender-ambiguous\": \"\\f641\",\n \"gender-female\": \"\\f642\",\n \"gender-male\": \"\\f643\",\n \"gender-trans\": \"\\f644\",\n \"headset-vr\": \"\\f645\",\n \"info-lg\": \"\\f646\",\n \"mastodon\": \"\\f647\",\n \"messenger\": \"\\f648\",\n \"piggy-bank-fill\": \"\\f649\",\n \"piggy-bank\": \"\\f64a\",\n \"pin-map-fill\": \"\\f64b\",\n \"pin-map\": \"\\f64c\",\n \"plus-lg\": \"\\f64d\",\n \"question-lg\": \"\\f64e\",\n \"recycle\": \"\\f64f\",\n \"reddit\": \"\\f650\",\n \"safe-fill\": \"\\f651\",\n \"safe2-fill\": \"\\f652\",\n \"safe2\": \"\\f653\",\n \"sd-card-fill\": \"\\f654\",\n \"sd-card\": \"\\f655\",\n \"skype\": \"\\f656\",\n \"slash-lg\": \"\\f657\",\n \"translate\": \"\\f658\",\n \"x-lg\": \"\\f659\",\n \"safe\": \"\\f65a\",\n \"apple\": \"\\f65b\",\n \"microsoft\": \"\\f65d\",\n \"windows\": \"\\f65e\",\n \"behance\": \"\\f65c\",\n \"dribbble\": \"\\f65f\",\n \"line\": \"\\f660\",\n \"medium\": \"\\f661\",\n \"paypal\": \"\\f662\",\n \"pinterest\": \"\\f663\",\n \"signal\": \"\\f664\",\n \"snapchat\": \"\\f665\",\n \"spotify\": \"\\f666\",\n \"stack-overflow\": \"\\f667\",\n \"strava\": \"\\f668\",\n \"wordpress\": \"\\f669\",\n \"vimeo\": \"\\f66a\",\n \"activity\": \"\\f66b\",\n \"easel2-fill\": \"\\f66c\",\n \"easel2\": \"\\f66d\",\n \"easel3-fill\": \"\\f66e\",\n \"easel3\": \"\\f66f\",\n \"fan\": \"\\f670\",\n \"fingerprint\": \"\\f671\",\n \"graph-down-arrow\": \"\\f672\",\n \"graph-up-arrow\": \"\\f673\",\n \"hypnotize\": \"\\f674\",\n \"magic\": \"\\f675\",\n \"person-rolodex\": \"\\f676\",\n \"person-video\": \"\\f677\",\n \"person-video2\": \"\\f678\",\n \"person-video3\": \"\\f679\",\n \"person-workspace\": \"\\f67a\",\n \"radioactive\": \"\\f67b\",\n \"webcam-fill\": \"\\f67c\",\n \"webcam\": \"\\f67d\",\n \"yin-yang\": \"\\f67e\",\n \"bandaid-fill\": \"\\f680\",\n \"bandaid\": \"\\f681\",\n \"bluetooth\": \"\\f682\",\n \"body-text\": \"\\f683\",\n \"boombox\": \"\\f684\",\n \"boxes\": \"\\f685\",\n \"dpad-fill\": \"\\f686\",\n \"dpad\": \"\\f687\",\n \"ear-fill\": \"\\f688\",\n \"ear\": \"\\f689\",\n \"envelope-check-fill\": \"\\f68b\",\n \"envelope-check\": \"\\f68c\",\n \"envelope-dash-fill\": \"\\f68e\",\n \"envelope-dash\": \"\\f68f\",\n \"envelope-exclamation-fill\": \"\\f691\",\n \"envelope-exclamation\": \"\\f692\",\n \"envelope-plus-fill\": \"\\f693\",\n \"envelope-plus\": \"\\f694\",\n \"envelope-slash-fill\": \"\\f696\",\n \"envelope-slash\": \"\\f697\",\n \"envelope-x-fill\": \"\\f699\",\n \"envelope-x\": \"\\f69a\",\n \"explicit-fill\": \"\\f69b\",\n \"explicit\": \"\\f69c\",\n \"git\": \"\\f69d\",\n \"infinity\": \"\\f69e\",\n \"list-columns-reverse\": \"\\f69f\",\n \"list-columns\": \"\\f6a0\",\n \"meta\": \"\\f6a1\",\n \"nintendo-switch\": \"\\f6a4\",\n \"pc-display-horizontal\": \"\\f6a5\",\n \"pc-display\": \"\\f6a6\",\n \"pc-horizontal\": \"\\f6a7\",\n \"pc\": \"\\f6a8\",\n \"playstation\": \"\\f6a9\",\n \"plus-slash-minus\": \"\\f6aa\",\n \"projector-fill\": \"\\f6ab\",\n \"projector\": \"\\f6ac\",\n \"qr-code-scan\": \"\\f6ad\",\n \"qr-code\": \"\\f6ae\",\n \"quora\": \"\\f6af\",\n \"quote\": \"\\f6b0\",\n \"robot\": \"\\f6b1\",\n \"send-check-fill\": \"\\f6b2\",\n \"send-check\": \"\\f6b3\",\n \"send-dash-fill\": \"\\f6b4\",\n \"send-dash\": \"\\f6b5\",\n \"send-exclamation-fill\": \"\\f6b7\",\n \"send-exclamation\": \"\\f6b8\",\n \"send-fill\": \"\\f6b9\",\n \"send-plus-fill\": \"\\f6ba\",\n \"send-plus\": \"\\f6bb\",\n \"send-slash-fill\": \"\\f6bc\",\n \"send-slash\": \"\\f6bd\",\n \"send-x-fill\": \"\\f6be\",\n \"send-x\": \"\\f6bf\",\n \"send\": \"\\f6c0\",\n \"steam\": \"\\f6c1\",\n \"terminal-dash\": \"\\f6c3\",\n \"terminal-plus\": \"\\f6c4\",\n \"terminal-split\": \"\\f6c5\",\n \"ticket-detailed-fill\": \"\\f6c6\",\n \"ticket-detailed\": \"\\f6c7\",\n \"ticket-fill\": \"\\f6c8\",\n \"ticket-perforated-fill\": \"\\f6c9\",\n \"ticket-perforated\": \"\\f6ca\",\n \"ticket\": \"\\f6cb\",\n \"tiktok\": \"\\f6cc\",\n \"window-dash\": \"\\f6cd\",\n \"window-desktop\": \"\\f6ce\",\n \"window-fullscreen\": \"\\f6cf\",\n \"window-plus\": \"\\f6d0\",\n \"window-split\": \"\\f6d1\",\n \"window-stack\": \"\\f6d2\",\n \"window-x\": \"\\f6d3\",\n \"xbox\": \"\\f6d4\",\n \"ethernet\": \"\\f6d5\",\n \"hdmi-fill\": \"\\f6d6\",\n \"hdmi\": \"\\f6d7\",\n \"usb-c-fill\": \"\\f6d8\",\n \"usb-c\": \"\\f6d9\",\n \"usb-fill\": \"\\f6da\",\n \"usb-plug-fill\": \"\\f6db\",\n \"usb-plug\": \"\\f6dc\",\n \"usb-symbol\": \"\\f6dd\",\n \"usb\": \"\\f6de\",\n \"boombox-fill\": \"\\f6df\",\n \"displayport\": \"\\f6e1\",\n \"gpu-card\": \"\\f6e2\",\n \"memory\": \"\\f6e3\",\n \"modem-fill\": \"\\f6e4\",\n \"modem\": \"\\f6e5\",\n \"motherboard-fill\": \"\\f6e6\",\n \"motherboard\": \"\\f6e7\",\n \"optical-audio-fill\": \"\\f6e8\",\n \"optical-audio\": \"\\f6e9\",\n \"pci-card\": \"\\f6ea\",\n \"router-fill\": \"\\f6eb\",\n \"router\": \"\\f6ec\",\n \"thunderbolt-fill\": \"\\f6ef\",\n \"thunderbolt\": \"\\f6f0\",\n \"usb-drive-fill\": \"\\f6f1\",\n \"usb-drive\": \"\\f6f2\",\n \"usb-micro-fill\": \"\\f6f3\",\n \"usb-micro\": \"\\f6f4\",\n \"usb-mini-fill\": \"\\f6f5\",\n \"usb-mini\": \"\\f6f6\",\n \"cloud-haze2\": \"\\f6f7\",\n \"device-hdd-fill\": \"\\f6f8\",\n \"device-hdd\": \"\\f6f9\",\n \"device-ssd-fill\": \"\\f6fa\",\n \"device-ssd\": \"\\f6fb\",\n \"displayport-fill\": \"\\f6fc\",\n \"mortarboard-fill\": \"\\f6fd\",\n \"mortarboard\": \"\\f6fe\",\n \"terminal-x\": \"\\f6ff\",\n \"arrow-through-heart-fill\": \"\\f700\",\n \"arrow-through-heart\": \"\\f701\",\n \"badge-sd-fill\": \"\\f702\",\n \"badge-sd\": \"\\f703\",\n \"bag-heart-fill\": \"\\f704\",\n \"bag-heart\": \"\\f705\",\n \"balloon-fill\": \"\\f706\",\n \"balloon-heart-fill\": \"\\f707\",\n \"balloon-heart\": \"\\f708\",\n \"balloon\": \"\\f709\",\n \"box2-fill\": \"\\f70a\",\n \"box2-heart-fill\": \"\\f70b\",\n \"box2-heart\": \"\\f70c\",\n \"box2\": \"\\f70d\",\n \"braces-asterisk\": \"\\f70e\",\n \"calendar-heart-fill\": \"\\f70f\",\n \"calendar-heart\": \"\\f710\",\n \"calendar2-heart-fill\": \"\\f711\",\n \"calendar2-heart\": \"\\f712\",\n \"chat-heart-fill\": \"\\f713\",\n \"chat-heart\": \"\\f714\",\n \"chat-left-heart-fill\": \"\\f715\",\n \"chat-left-heart\": \"\\f716\",\n \"chat-right-heart-fill\": \"\\f717\",\n \"chat-right-heart\": \"\\f718\",\n \"chat-square-heart-fill\": \"\\f719\",\n \"chat-square-heart\": \"\\f71a\",\n \"clipboard-check-fill\": \"\\f71b\",\n \"clipboard-data-fill\": \"\\f71c\",\n \"clipboard-fill\": \"\\f71d\",\n \"clipboard-heart-fill\": \"\\f71e\",\n \"clipboard-heart\": \"\\f71f\",\n \"clipboard-minus-fill\": \"\\f720\",\n \"clipboard-plus-fill\": \"\\f721\",\n \"clipboard-pulse\": \"\\f722\",\n \"clipboard-x-fill\": \"\\f723\",\n \"clipboard2-check-fill\": \"\\f724\",\n \"clipboard2-check\": \"\\f725\",\n \"clipboard2-data-fill\": \"\\f726\",\n \"clipboard2-data\": \"\\f727\",\n \"clipboard2-fill\": \"\\f728\",\n \"clipboard2-heart-fill\": \"\\f729\",\n \"clipboard2-heart\": \"\\f72a\",\n \"clipboard2-minus-fill\": \"\\f72b\",\n \"clipboard2-minus\": \"\\f72c\",\n \"clipboard2-plus-fill\": \"\\f72d\",\n \"clipboard2-plus\": \"\\f72e\",\n \"clipboard2-pulse-fill\": \"\\f72f\",\n \"clipboard2-pulse\": \"\\f730\",\n \"clipboard2-x-fill\": \"\\f731\",\n \"clipboard2-x\": \"\\f732\",\n \"clipboard2\": \"\\f733\",\n \"emoji-kiss-fill\": \"\\f734\",\n \"emoji-kiss\": \"\\f735\",\n \"envelope-heart-fill\": \"\\f736\",\n \"envelope-heart\": \"\\f737\",\n \"envelope-open-heart-fill\": \"\\f738\",\n \"envelope-open-heart\": \"\\f739\",\n \"envelope-paper-fill\": \"\\f73a\",\n \"envelope-paper-heart-fill\": \"\\f73b\",\n \"envelope-paper-heart\": \"\\f73c\",\n \"envelope-paper\": \"\\f73d\",\n \"filetype-aac\": \"\\f73e\",\n \"filetype-ai\": \"\\f73f\",\n \"filetype-bmp\": \"\\f740\",\n \"filetype-cs\": \"\\f741\",\n \"filetype-css\": \"\\f742\",\n \"filetype-csv\": \"\\f743\",\n \"filetype-doc\": \"\\f744\",\n \"filetype-docx\": \"\\f745\",\n \"filetype-exe\": \"\\f746\",\n \"filetype-gif\": \"\\f747\",\n \"filetype-heic\": \"\\f748\",\n \"filetype-html\": \"\\f749\",\n \"filetype-java\": \"\\f74a\",\n \"filetype-jpg\": \"\\f74b\",\n \"filetype-js\": \"\\f74c\",\n \"filetype-jsx\": \"\\f74d\",\n \"filetype-key\": \"\\f74e\",\n \"filetype-m4p\": \"\\f74f\",\n \"filetype-md\": \"\\f750\",\n \"filetype-mdx\": \"\\f751\",\n \"filetype-mov\": \"\\f752\",\n \"filetype-mp3\": \"\\f753\",\n \"filetype-mp4\": \"\\f754\",\n \"filetype-otf\": \"\\f755\",\n \"filetype-pdf\": \"\\f756\",\n \"filetype-php\": \"\\f757\",\n \"filetype-png\": \"\\f758\",\n \"filetype-ppt\": \"\\f75a\",\n \"filetype-psd\": \"\\f75b\",\n \"filetype-py\": \"\\f75c\",\n \"filetype-raw\": \"\\f75d\",\n \"filetype-rb\": \"\\f75e\",\n \"filetype-sass\": \"\\f75f\",\n \"filetype-scss\": \"\\f760\",\n \"filetype-sh\": \"\\f761\",\n \"filetype-svg\": \"\\f762\",\n \"filetype-tiff\": \"\\f763\",\n \"filetype-tsx\": \"\\f764\",\n \"filetype-ttf\": \"\\f765\",\n \"filetype-txt\": \"\\f766\",\n \"filetype-wav\": \"\\f767\",\n \"filetype-woff\": \"\\f768\",\n \"filetype-xls\": \"\\f76a\",\n \"filetype-xml\": \"\\f76b\",\n \"filetype-yml\": \"\\f76c\",\n \"heart-arrow\": \"\\f76d\",\n \"heart-pulse-fill\": \"\\f76e\",\n \"heart-pulse\": \"\\f76f\",\n \"heartbreak-fill\": \"\\f770\",\n \"heartbreak\": \"\\f771\",\n \"hearts\": \"\\f772\",\n \"hospital-fill\": \"\\f773\",\n \"hospital\": \"\\f774\",\n \"house-heart-fill\": \"\\f775\",\n \"house-heart\": \"\\f776\",\n \"incognito\": \"\\f777\",\n \"magnet-fill\": \"\\f778\",\n \"magnet\": \"\\f779\",\n \"person-heart\": \"\\f77a\",\n \"person-hearts\": \"\\f77b\",\n \"phone-flip\": \"\\f77c\",\n \"plugin\": \"\\f77d\",\n \"postage-fill\": \"\\f77e\",\n \"postage-heart-fill\": \"\\f77f\",\n \"postage-heart\": \"\\f780\",\n \"postage\": \"\\f781\",\n \"postcard-fill\": \"\\f782\",\n \"postcard-heart-fill\": \"\\f783\",\n \"postcard-heart\": \"\\f784\",\n \"postcard\": \"\\f785\",\n \"search-heart-fill\": \"\\f786\",\n \"search-heart\": \"\\f787\",\n \"sliders2-vertical\": \"\\f788\",\n \"sliders2\": \"\\f789\",\n \"trash3-fill\": \"\\f78a\",\n \"trash3\": \"\\f78b\",\n \"valentine\": \"\\f78c\",\n \"valentine2\": \"\\f78d\",\n \"wrench-adjustable-circle-fill\": \"\\f78e\",\n \"wrench-adjustable-circle\": \"\\f78f\",\n \"wrench-adjustable\": \"\\f790\",\n \"filetype-json\": \"\\f791\",\n \"filetype-pptx\": \"\\f792\",\n \"filetype-xlsx\": \"\\f793\",\n \"1-circle-fill\": \"\\f796\",\n \"1-circle\": \"\\f797\",\n \"1-square-fill\": \"\\f798\",\n \"1-square\": \"\\f799\",\n \"2-circle-fill\": \"\\f79c\",\n \"2-circle\": \"\\f79d\",\n \"2-square-fill\": \"\\f79e\",\n \"2-square\": \"\\f79f\",\n \"3-circle-fill\": \"\\f7a2\",\n \"3-circle\": \"\\f7a3\",\n \"3-square-fill\": \"\\f7a4\",\n \"3-square\": \"\\f7a5\",\n \"4-circle-fill\": \"\\f7a8\",\n \"4-circle\": \"\\f7a9\",\n \"4-square-fill\": \"\\f7aa\",\n \"4-square\": \"\\f7ab\",\n \"5-circle-fill\": \"\\f7ae\",\n \"5-circle\": \"\\f7af\",\n \"5-square-fill\": \"\\f7b0\",\n \"5-square\": \"\\f7b1\",\n \"6-circle-fill\": \"\\f7b4\",\n \"6-circle\": \"\\f7b5\",\n \"6-square-fill\": \"\\f7b6\",\n \"6-square\": \"\\f7b7\",\n \"7-circle-fill\": \"\\f7ba\",\n \"7-circle\": \"\\f7bb\",\n \"7-square-fill\": \"\\f7bc\",\n \"7-square\": \"\\f7bd\",\n \"8-circle-fill\": \"\\f7c0\",\n \"8-circle\": \"\\f7c1\",\n \"8-square-fill\": \"\\f7c2\",\n \"8-square\": \"\\f7c3\",\n \"9-circle-fill\": \"\\f7c6\",\n \"9-circle\": \"\\f7c7\",\n \"9-square-fill\": \"\\f7c8\",\n \"9-square\": \"\\f7c9\",\n \"airplane-engines-fill\": \"\\f7ca\",\n \"airplane-engines\": \"\\f7cb\",\n \"airplane-fill\": \"\\f7cc\",\n \"airplane\": \"\\f7cd\",\n \"alexa\": \"\\f7ce\",\n \"alipay\": \"\\f7cf\",\n \"android\": \"\\f7d0\",\n \"android2\": \"\\f7d1\",\n \"box-fill\": \"\\f7d2\",\n \"box-seam-fill\": \"\\f7d3\",\n \"browser-chrome\": \"\\f7d4\",\n \"browser-edge\": \"\\f7d5\",\n \"browser-firefox\": \"\\f7d6\",\n \"browser-safari\": \"\\f7d7\",\n \"c-circle-fill\": \"\\f7da\",\n \"c-circle\": \"\\f7db\",\n \"c-square-fill\": \"\\f7dc\",\n \"c-square\": \"\\f7dd\",\n \"capsule-pill\": \"\\f7de\",\n \"capsule\": \"\\f7df\",\n \"car-front-fill\": \"\\f7e0\",\n \"car-front\": \"\\f7e1\",\n \"cassette-fill\": \"\\f7e2\",\n \"cassette\": \"\\f7e3\",\n \"cc-circle-fill\": \"\\f7e6\",\n \"cc-circle\": \"\\f7e7\",\n \"cc-square-fill\": \"\\f7e8\",\n \"cc-square\": \"\\f7e9\",\n \"cup-hot-fill\": \"\\f7ea\",\n \"cup-hot\": \"\\f7eb\",\n \"currency-rupee\": \"\\f7ec\",\n \"dropbox\": \"\\f7ed\",\n \"escape\": \"\\f7ee\",\n \"fast-forward-btn-fill\": \"\\f7ef\",\n \"fast-forward-btn\": \"\\f7f0\",\n \"fast-forward-circle-fill\": \"\\f7f1\",\n \"fast-forward-circle\": \"\\f7f2\",\n \"fast-forward-fill\": \"\\f7f3\",\n \"fast-forward\": \"\\f7f4\",\n \"filetype-sql\": \"\\f7f5\",\n \"fire\": \"\\f7f6\",\n \"google-play\": \"\\f7f7\",\n \"h-circle-fill\": \"\\f7fa\",\n \"h-circle\": \"\\f7fb\",\n \"h-square-fill\": \"\\f7fc\",\n \"h-square\": \"\\f7fd\",\n \"indent\": \"\\f7fe\",\n \"lungs-fill\": \"\\f7ff\",\n \"lungs\": \"\\f800\",\n \"microsoft-teams\": \"\\f801\",\n \"p-circle-fill\": \"\\f804\",\n \"p-circle\": \"\\f805\",\n \"p-square-fill\": \"\\f806\",\n \"p-square\": \"\\f807\",\n \"pass-fill\": \"\\f808\",\n \"pass\": \"\\f809\",\n \"prescription\": \"\\f80a\",\n \"prescription2\": \"\\f80b\",\n \"r-circle-fill\": \"\\f80e\",\n \"r-circle\": \"\\f80f\",\n \"r-square-fill\": \"\\f810\",\n \"r-square\": \"\\f811\",\n \"repeat-1\": \"\\f812\",\n \"repeat\": \"\\f813\",\n \"rewind-btn-fill\": \"\\f814\",\n \"rewind-btn\": \"\\f815\",\n \"rewind-circle-fill\": \"\\f816\",\n \"rewind-circle\": \"\\f817\",\n \"rewind-fill\": \"\\f818\",\n \"rewind\": \"\\f819\",\n \"train-freight-front-fill\": \"\\f81a\",\n \"train-freight-front\": \"\\f81b\",\n \"train-front-fill\": \"\\f81c\",\n \"train-front\": \"\\f81d\",\n \"train-lightrail-front-fill\": \"\\f81e\",\n \"train-lightrail-front\": \"\\f81f\",\n \"truck-front-fill\": \"\\f820\",\n \"truck-front\": \"\\f821\",\n \"ubuntu\": \"\\f822\",\n \"unindent\": \"\\f823\",\n \"unity\": \"\\f824\",\n \"universal-access-circle\": \"\\f825\",\n \"universal-access\": \"\\f826\",\n \"virus\": \"\\f827\",\n \"virus2\": \"\\f828\",\n \"wechat\": \"\\f829\",\n \"yelp\": \"\\f82a\",\n \"sign-stop-fill\": \"\\f82b\",\n \"sign-stop-lights-fill\": \"\\f82c\",\n \"sign-stop-lights\": \"\\f82d\",\n \"sign-stop\": \"\\f82e\",\n \"sign-turn-left-fill\": \"\\f82f\",\n \"sign-turn-left\": \"\\f830\",\n \"sign-turn-right-fill\": \"\\f831\",\n \"sign-turn-right\": \"\\f832\",\n \"sign-turn-slight-left-fill\": \"\\f833\",\n \"sign-turn-slight-left\": \"\\f834\",\n \"sign-turn-slight-right-fill\": \"\\f835\",\n \"sign-turn-slight-right\": \"\\f836\",\n \"sign-yield-fill\": \"\\f837\",\n \"sign-yield\": \"\\f838\",\n \"ev-station-fill\": \"\\f839\",\n \"ev-station\": \"\\f83a\",\n \"fuel-pump-diesel-fill\": \"\\f83b\",\n \"fuel-pump-diesel\": \"\\f83c\",\n \"fuel-pump-fill\": \"\\f83d\",\n \"fuel-pump\": \"\\f83e\",\n \"0-circle-fill\": \"\\f83f\",\n \"0-circle\": \"\\f840\",\n \"0-square-fill\": \"\\f841\",\n \"0-square\": \"\\f842\",\n \"rocket-fill\": \"\\f843\",\n \"rocket-takeoff-fill\": \"\\f844\",\n \"rocket-takeoff\": \"\\f845\",\n \"rocket\": \"\\f846\",\n \"stripe\": \"\\f847\",\n \"subscript\": \"\\f848\",\n \"superscript\": \"\\f849\",\n \"trello\": \"\\f84a\",\n \"envelope-at-fill\": \"\\f84b\",\n \"envelope-at\": \"\\f84c\",\n \"regex\": \"\\f84d\",\n \"text-wrap\": \"\\f84e\",\n \"sign-dead-end-fill\": \"\\f84f\",\n \"sign-dead-end\": \"\\f850\",\n \"sign-do-not-enter-fill\": \"\\f851\",\n \"sign-do-not-enter\": \"\\f852\",\n \"sign-intersection-fill\": \"\\f853\",\n \"sign-intersection-side-fill\": \"\\f854\",\n \"sign-intersection-side\": \"\\f855\",\n \"sign-intersection-t-fill\": \"\\f856\",\n \"sign-intersection-t\": \"\\f857\",\n \"sign-intersection-y-fill\": \"\\f858\",\n \"sign-intersection-y\": \"\\f859\",\n \"sign-intersection\": \"\\f85a\",\n \"sign-merge-left-fill\": \"\\f85b\",\n \"sign-merge-left\": \"\\f85c\",\n \"sign-merge-right-fill\": \"\\f85d\",\n \"sign-merge-right\": \"\\f85e\",\n \"sign-no-left-turn-fill\": \"\\f85f\",\n \"sign-no-left-turn\": \"\\f860\",\n \"sign-no-parking-fill\": \"\\f861\",\n \"sign-no-parking\": \"\\f862\",\n \"sign-no-right-turn-fill\": \"\\f863\",\n \"sign-no-right-turn\": \"\\f864\",\n \"sign-railroad-fill\": \"\\f865\",\n \"sign-railroad\": \"\\f866\",\n \"building-add\": \"\\f867\",\n \"building-check\": \"\\f868\",\n \"building-dash\": \"\\f869\",\n \"building-down\": \"\\f86a\",\n \"building-exclamation\": \"\\f86b\",\n \"building-fill-add\": \"\\f86c\",\n \"building-fill-check\": \"\\f86d\",\n \"building-fill-dash\": \"\\f86e\",\n \"building-fill-down\": \"\\f86f\",\n \"building-fill-exclamation\": \"\\f870\",\n \"building-fill-gear\": \"\\f871\",\n \"building-fill-lock\": \"\\f872\",\n \"building-fill-slash\": \"\\f873\",\n \"building-fill-up\": \"\\f874\",\n \"building-fill-x\": \"\\f875\",\n \"building-fill\": \"\\f876\",\n \"building-gear\": \"\\f877\",\n \"building-lock\": \"\\f878\",\n \"building-slash\": \"\\f879\",\n \"building-up\": \"\\f87a\",\n \"building-x\": \"\\f87b\",\n \"buildings-fill\": \"\\f87c\",\n \"buildings\": \"\\f87d\",\n \"bus-front-fill\": \"\\f87e\",\n \"bus-front\": \"\\f87f\",\n \"ev-front-fill\": \"\\f880\",\n \"ev-front\": \"\\f881\",\n \"globe-americas\": \"\\f882\",\n \"globe-asia-australia\": \"\\f883\",\n \"globe-central-south-asia\": \"\\f884\",\n \"globe-europe-africa\": \"\\f885\",\n \"house-add-fill\": \"\\f886\",\n \"house-add\": \"\\f887\",\n \"house-check-fill\": \"\\f888\",\n \"house-check\": \"\\f889\",\n \"house-dash-fill\": \"\\f88a\",\n \"house-dash\": \"\\f88b\",\n \"house-down-fill\": \"\\f88c\",\n \"house-down\": \"\\f88d\",\n \"house-exclamation-fill\": \"\\f88e\",\n \"house-exclamation\": \"\\f88f\",\n \"house-gear-fill\": \"\\f890\",\n \"house-gear\": \"\\f891\",\n \"house-lock-fill\": \"\\f892\",\n \"house-lock\": \"\\f893\",\n \"house-slash-fill\": \"\\f894\",\n \"house-slash\": \"\\f895\",\n \"house-up-fill\": \"\\f896\",\n \"house-up\": \"\\f897\",\n \"house-x-fill\": \"\\f898\",\n \"house-x\": \"\\f899\",\n \"person-add\": \"\\f89a\",\n \"person-down\": \"\\f89b\",\n \"person-exclamation\": \"\\f89c\",\n \"person-fill-add\": \"\\f89d\",\n \"person-fill-check\": \"\\f89e\",\n \"person-fill-dash\": \"\\f89f\",\n \"person-fill-down\": \"\\f8a0\",\n \"person-fill-exclamation\": \"\\f8a1\",\n \"person-fill-gear\": \"\\f8a2\",\n \"person-fill-lock\": \"\\f8a3\",\n \"person-fill-slash\": \"\\f8a4\",\n \"person-fill-up\": \"\\f8a5\",\n \"person-fill-x\": \"\\f8a6\",\n \"person-gear\": \"\\f8a7\",\n \"person-lock\": \"\\f8a8\",\n \"person-slash\": \"\\f8a9\",\n \"person-up\": \"\\f8aa\",\n \"scooter\": \"\\f8ab\",\n \"taxi-front-fill\": \"\\f8ac\",\n \"taxi-front\": \"\\f8ad\",\n \"amd\": \"\\f8ae\",\n \"database-add\": \"\\f8af\",\n \"database-check\": \"\\f8b0\",\n \"database-dash\": \"\\f8b1\",\n \"database-down\": \"\\f8b2\",\n \"database-exclamation\": \"\\f8b3\",\n \"database-fill-add\": \"\\f8b4\",\n \"database-fill-check\": \"\\f8b5\",\n \"database-fill-dash\": \"\\f8b6\",\n \"database-fill-down\": \"\\f8b7\",\n \"database-fill-exclamation\": \"\\f8b8\",\n \"database-fill-gear\": \"\\f8b9\",\n \"database-fill-lock\": \"\\f8ba\",\n \"database-fill-slash\": \"\\f8bb\",\n \"database-fill-up\": \"\\f8bc\",\n \"database-fill-x\": \"\\f8bd\",\n \"database-fill\": \"\\f8be\",\n \"database-gear\": \"\\f8bf\",\n \"database-lock\": \"\\f8c0\",\n \"database-slash\": \"\\f8c1\",\n \"database-up\": \"\\f8c2\",\n \"database-x\": \"\\f8c3\",\n \"database\": \"\\f8c4\",\n \"houses-fill\": \"\\f8c5\",\n \"houses\": \"\\f8c6\",\n \"nvidia\": \"\\f8c7\",\n \"person-vcard-fill\": \"\\f8c8\",\n \"person-vcard\": \"\\f8c9\",\n \"sina-weibo\": \"\\f8ca\",\n \"tencent-qq\": \"\\f8cb\",\n \"wikipedia\": \"\\f8cc\",\n \"alphabet-uppercase\": \"\\f2a5\",\n \"alphabet\": \"\\f68a\",\n \"amazon\": \"\\f68d\",\n \"arrows-collapse-vertical\": \"\\f690\",\n \"arrows-expand-vertical\": \"\\f695\",\n \"arrows-vertical\": \"\\f698\",\n \"arrows\": \"\\f6a2\",\n \"ban-fill\": \"\\f6a3\",\n \"ban\": \"\\f6b6\",\n \"bing\": \"\\f6c2\",\n \"cake\": \"\\f6e0\",\n \"cake2\": \"\\f6ed\",\n \"cookie\": \"\\f6ee\",\n \"copy\": \"\\f759\",\n \"crosshair\": \"\\f769\",\n \"crosshair2\": \"\\f794\",\n \"emoji-astonished-fill\": \"\\f795\",\n \"emoji-astonished\": \"\\f79a\",\n \"emoji-grimace-fill\": \"\\f79b\",\n \"emoji-grimace\": \"\\f7a0\",\n \"emoji-grin-fill\": \"\\f7a1\",\n \"emoji-grin\": \"\\f7a6\",\n \"emoji-surprise-fill\": \"\\f7a7\",\n \"emoji-surprise\": \"\\f7ac\",\n \"emoji-tear-fill\": \"\\f7ad\",\n \"emoji-tear\": \"\\f7b2\",\n \"envelope-arrow-down-fill\": \"\\f7b3\",\n \"envelope-arrow-down\": \"\\f7b8\",\n \"envelope-arrow-up-fill\": \"\\f7b9\",\n \"envelope-arrow-up\": \"\\f7be\",\n \"feather\": \"\\f7bf\",\n \"feather2\": \"\\f7c4\",\n \"floppy-fill\": \"\\f7c5\",\n \"floppy\": \"\\f7d8\",\n \"floppy2-fill\": \"\\f7d9\",\n \"floppy2\": \"\\f7e4\",\n \"gitlab\": \"\\f7e5\",\n \"highlighter\": \"\\f7f8\",\n \"marker-tip\": \"\\f802\",\n \"nvme-fill\": \"\\f803\",\n \"nvme\": \"\\f80c\",\n \"opencollective\": \"\\f80d\",\n \"pci-card-network\": \"\\f8cd\",\n \"pci-card-sound\": \"\\f8ce\",\n \"radar\": \"\\f8cf\",\n \"send-arrow-down-fill\": \"\\f8d0\",\n \"send-arrow-down\": \"\\f8d1\",\n \"send-arrow-up-fill\": \"\\f8d2\",\n \"send-arrow-up\": \"\\f8d3\",\n \"sim-slash-fill\": \"\\f8d4\",\n \"sim-slash\": \"\\f8d5\",\n \"sourceforge\": \"\\f8d6\",\n \"substack\": \"\\f8d7\",\n \"threads-fill\": \"\\f8d8\",\n \"threads\": \"\\f8d9\",\n \"transparency\": \"\\f8da\",\n \"twitter-x\": \"\\f8db\",\n \"type-h4\": \"\\f8dc\",\n \"type-h5\": \"\\f8dd\",\n \"type-h6\": \"\\f8de\",\n \"backpack-fill\": \"\\f8df\",\n \"backpack\": \"\\f8e0\",\n \"backpack2-fill\": \"\\f8e1\",\n \"backpack2\": \"\\f8e2\",\n \"backpack3-fill\": \"\\f8e3\",\n \"backpack3\": \"\\f8e4\",\n \"backpack4-fill\": \"\\f8e5\",\n \"backpack4\": \"\\f8e6\",\n \"brilliance\": \"\\f8e7\",\n \"cake-fill\": \"\\f8e8\",\n \"cake2-fill\": \"\\f8e9\",\n \"duffle-fill\": \"\\f8ea\",\n \"duffle\": \"\\f8eb\",\n \"exposure\": \"\\f8ec\",\n \"gender-neuter\": \"\\f8ed\",\n \"highlights\": \"\\f8ee\",\n \"luggage-fill\": \"\\f8ef\",\n \"luggage\": \"\\f8f0\",\n \"mailbox-flag\": \"\\f8f1\",\n \"mailbox2-flag\": \"\\f8f2\",\n \"noise-reduction\": \"\\f8f3\",\n \"passport-fill\": \"\\f8f4\",\n \"passport\": \"\\f8f5\",\n \"person-arms-up\": \"\\f8f6\",\n \"person-raised-hand\": \"\\f8f7\",\n \"person-standing-dress\": \"\\f8f8\",\n \"person-standing\": \"\\f8f9\",\n \"person-walking\": \"\\f8fa\",\n \"person-wheelchair\": \"\\f8fb\",\n \"shadows\": \"\\f8fc\",\n \"suitcase-fill\": \"\\f8fd\",\n \"suitcase-lg-fill\": \"\\f8fe\",\n \"suitcase-lg\": \"\\f8ff\",\n \"suitcase\": \"\\f900\",\n \"suitcase2-fill\": \"\\f901\",\n \"suitcase2\": \"\\f902\",\n \"vignette\": \"\\f903\",\n);\n\n@each $icon, $codepoint in $bootstrap-icons-map {\n .bi-#{$icon}::before { content: $codepoint; }\n}\n", "/**\n * Licensed to the .NET Foundation under one or more agreements.\n * The .NET Foundation licenses this file to you under the MIT license.\n */\n\n$enable-important-utilities: false;\n$container-max-widths: (\n xxl: 1768px\n) !default;\n\n@import \"mixins\";\n@import \"bootstrap/scss/bootstrap\";\n@import \"highlight\";\n@import \"layout\";\n@import \"nav\";\n@import \"toc\";\n@import \"markdown\";\n@import \"search\";\n@import \"dotnet\";\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.xref,\n.text-break {\n word-wrap: break-word;\n word-break: break-word;\n}\n\n.divider {\n margin: 0 5px;\n color: #ccc;\n}\n\narticle {\n // For REST API view source link\n span.small.pull-right {\n float: right;\n }\n\n img {\n max-width: 100%;\n height: auto;\n }\n}\n\n.codewrapper {\n position: relative;\n}\n\n.sample-response .response-content {\n max-height: 200px;\n}\n\n@media (width <= 768px) {\n #mobile-indicator {\n display: block;\n }\n\n .mobile-hide {\n display: none;\n }\n\n /* workaround for #hashtag url is no longer needed */\n h1::before,\n h2::before,\n h3::before,\n h4::before {\n content: \"\";\n display: none;\n }\n}\n", "/**\n * Licensed to the .NET Foundation under one or more agreements.\n * The .NET Foundation licenses this file to you under the MIT license.\n */\n\n@mixin adjust-icon {\n font-family: bootstrap-icons;\n position: relative;\n margin-right: 0.5em;\n top: 0.2em;\n font-size: 1.25em;\n font-weight: normal;\n }\n\n @mixin underline-on-hover {\n text-decoration: none;\n\n &:hover, &:focus {\n text-decoration: underline;\n }\n }\n", "@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n", ":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-color: #{$mark-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n --#{$prefix}highlight-color: #{$mark-color-dark};\n --#{$prefix}highlight-bg: #{$mark-bg-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n", "// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n", "// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n", "// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`